<?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>102543</bug_id>
          
          <creation_ts>2012-11-16 11:40:58 -0800</creation_ts>
          <short_desc>ScrollingCoordinator::hasVisibleSlowRepaintFixedObject() should exclude out-of-view fixed position elements</short_desc>
          <delta_ts>2012-12-18 14:41:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104277</dependson>
    
    <dependson>104294</dependson>
    
    <dependson>104303</dependson>
    
    <dependson>104714</dependson>
          <blocked>103470</blocked>
    
    <blocked>104724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyostil</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>trchen</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>769519</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-16 11:40:58 -0800</bug_when>
    <thetext>Bug 101303 resolved the issue on Mac only. On other platforms, as ScrollingCoordinator::hasNonLayerFixedObjects() is renamed to hasVisibleSlowRepaintFixedObjects(), it should exclude out-of-view fixed objects to avoid the issue described in bug 101303.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769523</commentid>
    <comment_count>1</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-11-16 11:43:47 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Bug 101303 resolved the issue on Mac only. On other platforms, as ScrollingCoordinator::hasNonLayerFixedObjects() is renamed to hasVisibleSlowRepaintFixedObjects(), it should exclude out-of-view fixed objects to avoid the issue described in bug 101303.

No other ports actually use threaded scrolling, so is there any real benefit to this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769533</commentid>
    <comment_count>2</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-16 11:48:40 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; No other ports actually use threaded scrolling, so is there any real benefit to this change?

It&apos;ll benefit Chromium which does accelerated scrolling in the compositor thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769535</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-11-16 11:49:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; No other ports actually use threaded scrolling, so is there any real benefit to this change?
&gt; 
&gt; It&apos;ll benefit Chromium which does accelerated scrolling in the compositor thread.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771303</commentid>
    <comment_count>4</comment_count>
      <attachid>175100</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-19 17:47:27 -0800</bug_when>
    <thetext>Created attachment 175100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771344</commentid>
    <comment_count>5</comment_count>
      <attachid>175100</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-19 18:16:38 -0800</bug_when>
    <thetext>Comment on attachment 175100
Patch

Attachment 175100 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14908379</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771377</commentid>
    <comment_count>6</comment_count>
      <attachid>175100</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 18:47:28 -0800</bug_when>
    <thetext>Comment on attachment 175100
Patch

Attachment 175100 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14912434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771393</commentid>
    <comment_count>7</comment_count>
      <attachid>175100</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 19:09:18 -0800</bug_when>
    <thetext>Comment on attachment 175100
Patch

Attachment 175100 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14894416</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771993</commentid>
    <comment_count>8</comment_count>
      <attachid>175244</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-20 10:41:35 -0800</bug_when>
    <thetext>Created attachment 175244
Add symbol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772056</commentid>
    <comment_count>9</comment_count>
      <attachid>175255</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-20 11:57:23 -0800</bug_when>
    <thetext>Created attachment 175255
For review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774664</commentid>
    <comment_count>10</comment_count>
      <attachid>175255</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-23 11:30:59 -0800</bug_when>
    <thetext>Comment on attachment 175255
For review

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

&gt; Source/WebCore/rendering/RenderLayerModelObject.h:65
&gt; +    bool m_isOutOfViewFixedPositioned : 1;

I don&apos;t think we should waste a member variable for this state which only applies to position:fixed elements for some ports; it probably increases the size of the class, possibly by 4 bytes. Please measure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776013</commentid>
    <comment_count>11</comment_count>
      <attachid>176104</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-26 16:12:18 -0800</bug_when>
    <thetext>Created attachment 176104
avoid new field</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776365</commentid>
    <comment_count>12</comment_count>
      <attachid>176104</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 22:44:27 -0800</bug_when>
    <thetext>Comment on attachment 176104
avoid new field

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

New failing tests:
compositing/geometry/fixed-position-composited-page-scale-down.html
compositing/geometry/fixed-position-transform-composited-page-scale-down.html
platform/chromium/virtual/softwarecompositing/geometry/fixed-position-composited-page-scale.html
platform/chromium/virtual/softwarecompositing/geometry/fixed-position-transform-composited-page-scale-down.html
compositing/geometry/fixed-position-composited-page-scale.html
platform/chromium/virtual/softwarecompositing/geometry/fixed-position-composited-page-scale-down.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777093</commentid>
    <comment_count>13</comment_count>
      <attachid>176320</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-27 12:13:14 -0800</bug_when>
    <thetext>Created attachment 176320
Fix layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777309</commentid>
    <comment_count>14</comment_count>
      <attachid>176355</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-27 16:07:12 -0800</bug_when>
    <thetext>Created attachment 176355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777372</commentid>
    <comment_count>15</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-27 16:43:06 -0800</bug_when>
    <thetext>Simon, could you take another look? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777894</commentid>
    <comment_count>16</comment_count>
      <attachid>176355</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-28 07:24:13 -0800</bug_when>
    <thetext>Comment on attachment 176355
Patch

Attachment 176355 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15003868

New failing tests:
compositing/geometry/fixed-position-composited-page-scale-scroll.html
compositing/geometry/fixed-position-composited-page-scale.html
compositing/geometry/fixed-position-composited-page-scale-down.html
fast/events/overflow-scroll-fake-mouse-move.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778128</commentid>
    <comment_count>17</comment_count>
      <attachid>176534</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-28 11:44:40 -0800</bug_when>
    <thetext>Created attachment 176534
Fix layout tests on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780167</commentid>
    <comment_count>18</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-11-30 09:23:21 -0800</bug_when>
    <thetext>Simon, what do you think about this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781852</commentid>
    <comment_count>19</comment_count>
      <attachid>176534</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-03 13:52:21 -0800</bug_when>
    <thetext>Comment on attachment 176534
Fix layout tests on Mac

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

&gt; Source/WebCore/page/Page.cpp:260
&gt; +    if (Document* document = m_mainFrame-&gt;document())

This can&apos;t ever be 0.

&gt; LayoutTests/compositing/geometry/fixed-position-composited-page-scale-down.html:17
&gt; +    window.internals.settings.setEnableCompositingForFixedPosition(true);

four-space indent please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781872</commentid>
    <comment_count>20</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-03 14:13:02 -0800</bug_when>
    <thetext>(In reply to comment #19)

Thanks for review.

&gt; (From update of attachment 176534 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176534&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:260
&gt; &gt; +    if (Document* document = m_mainFrame-&gt;document())
&gt; 
&gt; This can&apos;t ever be 0.
&gt; 

Are you sure about this? I saw many other similar checks in both Page.cpp and Frame.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781950</commentid>
    <comment_count>21</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-03 15:31:14 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 176534 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176534&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:260
&gt; &gt; +    if (Document* document = m_mainFrame-&gt;document())
&gt; 
&gt; This can&apos;t ever be 0.

Is your point base on that the method is only called from Internals::mainThreadScrollingReasons()? It seems better to me to have the check in Page::mainThreadScrollingReasonsAsText() for safety (in case that it&apos;s called from other places) and consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781972</commentid>
    <comment_count>22</comment_count>
      <attachid>177356</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-03 15:46:32 -0800</bug_when>
    <thetext>Created attachment 177356
Rebase and adjust indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781993</commentid>
    <comment_count>23</comment_count>
      <attachid>176534</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-03 16:00:32 -0800</bug_when>
    <thetext>Comment on attachment 176534
Fix layout tests on Mac

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

&gt;&gt;&gt;&gt; Source/WebCore/page/Page.cpp:260
&gt;&gt;&gt;&gt; +    if (Document* document = m_mainFrame-&gt;document())
&gt;&gt;&gt; 
&gt;&gt;&gt; This can&apos;t ever be 0.
&gt;&gt; 
&gt;&gt; Are you sure about this? I saw many other similar checks in both Page.cpp and Frame.cpp.
&gt; 
&gt; Is your point base on that the method is only called from Internals::mainThreadScrollingReasons()? It seems better to me to have the check in Page::mainThreadScrollingReasonsAsText() for safety (in case that it&apos;s called from other places) and consistency.

Just noticed that the last patch I uploaded is a version with the check removed. (I have no preference.)

&gt;&gt; LayoutTests/compositing/geometry/fixed-position-composited-page-scale-down.html:17
&gt;&gt; +    window.internals.settings.setEnableCompositingForFixedPosition(true);
&gt; 
&gt; four-space indent please

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782664</commentid>
    <comment_count>24</comment_count>
      <attachid>177506</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-04 10:15:33 -0800</bug_when>
    <thetext>Created attachment 177506
Rebase again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782690</commentid>
    <comment_count>25</comment_count>
      <attachid>177506</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-04 10:43:16 -0800</bug_when>
    <thetext>Comment on attachment 177506
Rebase again

Attachment 177506 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15119889</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782849</commentid>
    <comment_count>26</comment_count>
      <attachid>177534</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-04 13:19:18 -0800</bug_when>
    <thetext>Created attachment 177534
Fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782872</commentid>
    <comment_count>27</comment_count>
      <attachid>177534</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-04 13:45:32 -0800</bug_when>
    <thetext>Comment on attachment 177534
Fix win build

Attachment 177534 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15154083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783097</commentid>
    <comment_count>28</comment_count>
      <attachid>177603</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-04 16:41:26 -0800</bug_when>
    <thetext>Created attachment 177603
Try WebKit2.def.in change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783286</commentid>
    <comment_count>29</comment_count>
      <attachid>177603</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-04 20:06:08 -0800</bug_when>
    <thetext>Comment on attachment 177603
Try WebKit2.def.in change

Attachment 177603 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15153238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783801</commentid>
    <comment_count>30</comment_count>
      <attachid>177767</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-05 09:03:45 -0800</bug_when>
    <thetext>Created attachment 177767
Yet another try of WebKit2.def.in change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783872</commentid>
    <comment_count>31</comment_count>
      <attachid>177767</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-05 10:09:57 -0800</bug_when>
    <thetext>Comment on attachment 177767
Yet another try of WebKit2.def.in change

Attachment 177767 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15147552</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783882</commentid>
    <comment_count>32</comment_count>
      <attachid>177789</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-05 10:30:20 -0800</bug_when>
    <thetext>Created attachment 177789
Workaround Windows linker issue (bug 104136)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783971</commentid>
    <comment_count>33</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-05 12:11:51 -0800</bug_when>
    <thetext>@Simon, would you please review the change, or suggest another reviewer? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785053</commentid>
    <comment_count>34</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-06 10:56:41 -0800</bug_when>
    <thetext>To ease review, I will split this change into multiple ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785472</commentid>
    <comment_count>35</comment_count>
      <attachid>178122</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-06 17:45:56 -0800</bug_when>
    <thetext>Created attachment 178122
Patch (independent with the blocking bugs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785481</commentid>
    <comment_count>36</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-06 17:49:48 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=178122) [details]
&gt; Patch (independent with the blocking bugs)

We really want to fix this issue soon, so I created the last patch that resolves only part of the issue (the unscaled case) not depending on the other sub bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785495</commentid>
    <comment_count>37</comment_count>
      <attachid>178122</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-06 17:59:52 -0800</bug_when>
    <thetext>Comment on attachment 178122
Patch (independent with the blocking bugs)

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:3130
&gt; +        if (!isComposited() &amp;&amp; isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view())

(isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view()) should be packaged up into a function that&apos;s called from both RLC and this code.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1984
&gt; -        if (!viewBounds.intersects(layerBounds))
&gt; +        if (!viewBounds.intersects(layerBounds)) {
&gt; +            frameView-&gt;removeViewportConstrainedObject(renderer);
&gt;              return false;
&gt; +        }
&gt;      }
&gt;  
&gt; +    frameView-&gt;addViewportConstrainedObject(renderer);

I don&apos;t like the fact that this code is messing with the FrameView&apos;s viewportConstrainedObjects. I think you should track whether there are any ignorable Fixed objects in RLC.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1988
&gt; +    if (Settings* settings = m_renderView-&gt;document()-&gt;settings())
&gt; +        if (!settings-&gt;acceleratedCompositingForFixedPositionEnabled())
&gt; +            return false;

Why is this test at the end?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785965</commentid>
    <comment_count>38</comment_count>
      <attachid>178122</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-07 10:31:38 -0800</bug_when>
    <thetext>Comment on attachment 178122
Patch (independent with the blocking bugs)

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

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:3130
&gt;&gt; +        if (!isComposited() &amp;&amp; isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view())
&gt; 
&gt; (isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view()) should be packaged up into a function that&apos;s called from both RLC and this code.

Actually the common part is only (isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition). RLC needs to check the container separately as it need to check the NULL condition.
Also I&apos;m not sure how to name it. Does isFixedPositionAndStackingContext() look good?

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1984
&gt;&gt; +    frameView-&gt;addViewportConstrainedObject(renderer);
&gt; 
&gt; I don&apos;t like the fact that this code is messing with the FrameView&apos;s viewportConstrainedObjects. I think you should track whether there are any ignorable Fixed objects in RLC.

I think &quot;ignorable&quot; may mean different things. ScrollingCoordinator needs to exclude objects that are not actually viewport constrained in the viewportConstrainedObjects list when determine main thread scrolling. RenderLayer should not paint out-of-view fixed position layer when doing pre-painting. So I&apos;m not sure if we can track ignorable fixed objects in RLC for the different needs.

About viewportConstrainedObjects, I tried two methods:
1) Check if the object in FrameView::viewportConstrainedObjects() is actually viewport constrained in ScrollingCoordinator::hasVisibleSlowRepaintFixedObjects() (the previous patch)
2) Update FrameView::viewConstrainedObjects() by excluding non-viewport-constrained objects (the current patch)

More information about method 2: in patch of bug 103470 (which needs to exclude another category of elements from viewportConstrainedObjects), skyostil@ suggested to let FrameView::viewportConstrainedObjects() return only the actual viewport constrained objects excluding both out-of-view ones and the ones under transformed container. This needs change of where FrameView&apos;s viewportConstrainedObjects are updated. I haven&apos;t found a proper place yet. RLC seems not a good place.

Does method 1 look good to you?

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1988
&gt;&gt; +            return false;
&gt; 
&gt; Why is this test at the end?

I moved it here because in spite of acceleratedCompositingForFixedPositionEnabled, the invisible fixed position element should not be a viewport constrained object and should not cause slow scrolling.

Won&apos;t need this if we don&apos;t call FrameView::add/removeViewportConstrainedObject() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785973</commentid>
    <comment_count>39</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-07 10:41:52 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 178122 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178122&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:3130
&gt; &gt;&gt; +        if (!isComposited() &amp;&amp; isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view())
&gt; &gt; 
&gt; &gt; (isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view()) should be packaged up into a function that&apos;s called from both RLC and this code.
&gt; 
&gt; Actually the common part is only (isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition). RLC needs to check the container separately as it need to check the NULL condition.
&gt; Also I&apos;m not sure how to name it. Does isFixedPositionAndStackingContext() look good?

isStackingContextFixedPosition()?

&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1984
&gt; &gt;&gt; +    frameView-&gt;addViewportConstrainedObject(renderer);
&gt; &gt; 
&gt; &gt; I don&apos;t like the fact that this code is messing with the FrameView&apos;s viewportConstrainedObjects. I think you should track whether there are any ignorable Fixed objects in RLC.
&gt; 
&gt; I think &quot;ignorable&quot; may mean different things. ScrollingCoordinator needs to exclude objects that are not actually viewport constrained in the viewportConstrainedObjects list when determine main thread scrolling. RenderLayer should not paint out-of-view fixed position layer when doing pre-painting. So I&apos;m not sure if we can track ignorable fixed objects in RLC for the different needs.

Doesn&apos;t the same apply to the FrameView list of viewport-constrained objects then?

&gt; About viewportConstrainedObjects, I tried two methods:
&gt; 1) Check if the object in FrameView::viewportConstrainedObjects() is actually viewport constrained in ScrollingCoordinator::hasVisibleSlowRepaintFixedObjects() (the previous patch)

When does viewportConstrainedObjects() contain something that is not actually viewport-constrained? Out-of-view fixed things should still be considered viewport-constained, I think. Or, exclude them from FrameView::viewportConstrainedObjects(), but do so from RenderLayer or rendering code. Currently frameView-&gt;addViewportConstrainedObject(this); is called by RenderLayerModelObject::styleDidChange(), but at that point you don&apos;t know about layout, so you can&apos;t compare the bounds with the viewport.

I think we need a general solution here that works independently of compositing. Ideally it would be smart enough to handle position:-webkit-sticky things that are scrolled out of view too.

&gt; 2) Update FrameView::viewConstrainedObjects() by excluding non-viewport-constrained objects (the current patch)

But this patch does it via compositing code, which is wrong.

So the main question here is should FrameView::viewportConstrainedObjects() become FrameView::visibleViewportConstrainedObjects(), and, if so, how do we maintain this list correctly. If not, we need to do visibility/transformed container checks elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785992</commentid>
    <comment_count>40</comment_count>
      <attachid>178122</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-07 11:10:47 -0800</bug_when>
    <thetext>Comment on attachment 178122
Patch (independent with the blocking bugs)

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

&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1984
&gt;&gt;&gt;&gt; +    frameView-&gt;addViewportConstrainedObject(renderer);
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t like the fact that this code is messing with the FrameView&apos;s viewportConstrainedObjects. I think you should track whether there are any ignorable Fixed objects in RLC.
&gt;&gt; 
&gt;&gt; I think &quot;ignorable&quot; may mean different things. ScrollingCoordinator needs to exclude objects that are not actually viewport constrained in the viewportConstrainedObjects list when determine main thread scrolling. RenderLayer should not paint out-of-view fixed position layer when doing pre-painting. So I&apos;m not sure if we can track ignorable fixed objects in RLC for the different needs.
&gt;&gt; 
&gt;&gt; About viewportConstrainedObjects, I tried two methods:
&gt;&gt; 1) Check if the object in FrameView::viewportConstrainedObjects() is actually viewport constrained in ScrollingCoordinator::hasVisibleSlowRepaintFixedObjects() (the previous patch)
&gt;&gt; 2) Update FrameView::viewConstrainedObjects() by excluding non-viewport-constrained objects (the current patch)
&gt;&gt; 
&gt;&gt; More information about method 2: in patch of bug 103470 (which needs to exclude another category of elements from viewportConstrainedObjects), skyostil@ suggested to let FrameView::viewportConstrainedObjects() return only the actual viewport constrained objects excluding both out-of-view ones and the ones under transformed container. This needs change of where FrameView&apos;s viewportConstrainedObjects are updated. I haven&apos;t found a proper place yet. RLC seems not a good place.
&gt;&gt; 
&gt;&gt; Does method 1 look good to you?
&gt; 
&gt; Doesn&apos;t the same apply to the FrameView list of viewport-constrained objects then?

I&apos;m not sure if I understand your question. However, after looking at how viewportConstrainedObjects are used in FrameView itself, I think we&apos;d better exclude the objects from FrameView&apos;s viewportConstrainedObject (method 2) instead of excluding them in ScrollingCoordinator(method 1). I think this would also benefit other platforms to avoid non-viewport-constrained objects from downgrading the performance.

Using method 2, if not calling add/removeViewportConstrainedObjects in RLC, we need either
a) find better places to call add/removeViewportConstrainedObjects to exclude the non-viewport-constrained objects
or
b) maintain a set of non-viewport-constrained objects in RLC, and let FrameView exclude the objects from its own viewportConstrainedObjects

a) seems better but haven&apos;t found a better place than RLC yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785997</commentid>
    <comment_count>41</comment_count>
      <attachid>178122</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-07 11:12:52 -0800</bug_when>
    <thetext>Comment on attachment 178122
Patch (independent with the blocking bugs)

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1984
&gt;&gt;&gt;&gt;&gt; +    frameView-&gt;addViewportConstrainedObject(renderer);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I don&apos;t like the fact that this code is messing with the FrameView&apos;s viewportConstrainedObjects. I think you should track whether there are any ignorable Fixed objects in RLC.
&gt;&gt;&gt; 
&gt;&gt;&gt; I think &quot;ignorable&quot; may mean different things. ScrollingCoordinator needs to exclude objects that are not actually viewport constrained in the viewportConstrainedObjects list when determine main thread scrolling. RenderLayer should not paint out-of-view fixed position layer when doing pre-painting. So I&apos;m not sure if we can track ignorable fixed objects in RLC for the different needs.
&gt;&gt;&gt; 
&gt;&gt;&gt; About viewportConstrainedObjects, I tried two methods:
&gt;&gt;&gt; 1) Check if the object in FrameView::viewportConstrainedObjects() is actually viewport constrained in ScrollingCoordinator::hasVisibleSlowRepaintFixedObjects() (the previous patch)
&gt;&gt;&gt; 2) Update FrameView::viewConstrainedObjects() by excluding non-viewport-constrained objects (the current patch)
&gt;&gt;&gt; 
&gt;&gt;&gt; More information about method 2: in patch of bug 103470 (which needs to exclude another category of elements from viewportConstrainedObjects), skyostil@ suggested to let FrameView::viewportConstrainedObjects() return only the actual viewport constrained objects excluding both out-of-view ones and the ones under transformed container. This needs change of where FrameView&apos;s viewportConstrainedObjects are updated. I haven&apos;t found a proper place yet. RLC seems not a good place.
&gt;&gt;&gt; 
&gt;&gt;&gt; Does method 1 look good to you?
&gt;&gt; 
&gt;&gt; Doesn&apos;t the same apply to the FrameView list of viewport-constrained objects then?
&gt; 
&gt; I&apos;m not sure if I understand your question. However, after looking at how viewportConstrainedObjects are used in FrameView itself, I think we&apos;d better exclude the objects from FrameView&apos;s viewportConstrainedObject (method 2) instead of excluding them in ScrollingCoordinator(method 1). I think this would also benefit other platforms to avoid non-viewport-constrained objects from downgrading the performance.
&gt; 
&gt; Using method 2, if not calling add/removeViewportConstrainedObjects in RLC, we need either
&gt; a) find better places to call add/removeViewportConstrainedObjects to exclude the non-viewport-constrained objects
&gt; or
&gt; b) maintain a set of non-viewport-constrained objects in RLC, and let FrameView exclude the objects from its own viewportConstrainedObjects
&gt; 
&gt; a) seems better but haven&apos;t found a better place than RLC yet.

Sorry, I missed your additional comments which don&apos;t show in code review UI. Am reading them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786028</commentid>
    <comment_count>42</comment_count>
      <attachid>178247</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-07 11:58:52 -0800</bug_when>
    <thetext>Created attachment 178247
New patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786031</commentid>
    <comment_count>43</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-07 12:04:00 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; (From update of attachment 178122 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178122&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:3130
&gt; &gt; &gt;&gt; +        if (!isComposited() &amp;&amp; isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view())
&gt; &gt; &gt; 
&gt; &gt; &gt; (isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition &amp;&amp; m_renderer-&gt;container() == m_renderer-&gt;view()) should be packaged up into a function that&apos;s called from both RLC and this code.
&gt; &gt; 
&gt; &gt; Actually the common part is only (isStackingContext() &amp;&amp; m_renderer-&gt;style()-&gt;position() == FixedPosition). RLC needs to check the container separately as it need to check the NULL condition.
&gt; &gt; Also I&apos;m not sure how to name it. Does isFixedPositionAndStackingContext() look good?
&gt; 
&gt; isStackingContextFixedPosition()?
&gt;

Combined more conditions into a new function RenderLayerCompositor::isFixedPositionCanBeComposited().

&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1984
&gt; &gt; &gt;&gt; +    frameView-&gt;addViewportConstrainedObject(renderer);
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t like the fact that this code is messing with the FrameView&apos;s viewportConstrainedObjects. I think you should track whether there are any ignorable Fixed objects in RLC.
&gt; &gt; 
&gt; &gt; I think &quot;ignorable&quot; may mean different things. ScrollingCoordinator needs to exclude objects that are not actually viewport constrained in the viewportConstrainedObjects list when determine main thread scrolling. RenderLayer should not paint out-of-view fixed position layer when doing pre-painting. So I&apos;m not sure if we can track ignorable fixed objects in RLC for the different needs.
&gt; 
&gt; Doesn&apos;t the same apply to the FrameView list of viewport-constrained objects then?
&gt; 
&gt; &gt; About viewportConstrainedObjects, I tried two methods:
&gt; &gt; 1) Check if the object in FrameView::viewportConstrainedObjects() is actually viewport constrained in ScrollingCoordinator::hasVisibleSlowRepaintFixedObjects() (the previous patch)
&gt; 
&gt; When does viewportConstrainedObjects() contain something that is not actually viewport-constrained? Out-of-view fixed things should still be considered viewport-constained, I think. Or, exclude them from FrameView::viewportConstrainedObjects(), but do so from RenderLayer or rendering code. Currently frameView-&gt;addViewportConstrainedObject(this); is called by RenderLayerModelObject::styleDidChange(), but at that point you don&apos;t know about layout, so you can&apos;t compare the bounds with the viewport.
&gt; 
&gt; I think we need a general solution here that works independently of compositing. Ideally it would be smart enough to handle position:-webkit-sticky things that are scrolled out of view too.
&gt; 
&gt; &gt; 2) Update FrameView::viewConstrainedObjects() by excluding non-viewport-constrained objects (the current patch)
&gt; 
&gt; But this patch does it via compositing code, which is wrong.
&gt; 
&gt; So the main question here is should FrameView::viewportConstrainedObjects() become FrameView::visibleViewportConstrainedObjects(), and, if so, how do we maintain this list correctly. If not, we need to do visibility/transformed container checks elsewhere.

Kept viewConstrainedObjects unchanged. Now checks visibility in RenderLayer::paintLayer and ScrollingCoordinator::hasVisibleSlowRepaintFixedObjects(). Will also check transformed container in ScrollingCoordinator in bug 103470.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786054</commentid>
    <comment_count>44</comment_count>
      <attachid>178247</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-07 12:30:49 -0800</bug_when>
    <thetext>Comment on attachment 178247
New patch

Attachment 178247 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15189388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786100</commentid>
    <comment_count>45</comment_count>
      <attachid>178264</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-07 13:32:54 -0800</bug_when>
    <thetext>Created attachment 178264
Fix mac build break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787751</commentid>
    <comment_count>46</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-10 15:05:34 -0800</bug_when>
    <thetext>Simon, could you please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787776</commentid>
    <comment_count>47</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-10 15:29:47 -0800</bug_when>
    <thetext>I think the current patch still has some problems. Will upload a new patch for review soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788024</commentid>
    <comment_count>48</comment_count>
      <attachid>178710</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-10 21:50:20 -0800</bug_when>
    <thetext>Created attachment 178710
Let RLC manage reasons of fixed pos layer not composited</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788030</commentid>
    <comment_count>49</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-10 21:54:49 -0800</bug_when>
    <thetext>Simon, the last patch is now ready for review. Could you please review it? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788572</commentid>
    <comment_count>50</comment_count>
      <attachid>178710</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 10:26:43 -0800</bug_when>
    <thetext>Comment on attachment 178710
Let RLC manage reasons of fixed pos layer not composited

Sorry, found a problem again. Fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788579</commentid>
    <comment_count>51</comment_count>
      <attachid>178834</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 10:32:32 -0800</bug_when>
    <thetext>Created attachment 178834
Let RLC manage reasons of fixedpos layer not composited</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788603</commentid>
    <comment_count>52</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-12-11 10:57:33 -0800</bug_when>
    <thetext>The test seems the same - what was the issue with the last iteration, what fixed it, and what test covers it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788609</commentid>
    <comment_count>53</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 11:01:55 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; The test seems the same - what was the issue with the last iteration, what fixed it, and what test covers it?

The issue was that m_fixedPositionLayerNotCompositedMap.clear() is misplaced.
Will update the test to cover that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788619</commentid>
    <comment_count>54</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 11:13:51 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; The test seems the same - what was the issue with the last iteration, what fixed it, and what test covers it?

The problems mentioned in #47 were about code structure. The method RenderLayer to determine if it should be painted was tricky, and it seems not good to expose unclear RenderLayerCompositor::isFixedPositionCanBeComposited().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788621</commentid>
    <comment_count>55</comment_count>
      <attachid>178840</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 11:16:37 -0800</bug_when>
    <thetext>Created attachment 178840
Update test to cover issue of a previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788729</commentid>
    <comment_count>56</comment_count>
      <attachid>178840</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-11 13:28:51 -0800</bug_when>
    <thetext>Comment on attachment 178840
Update test to cover issue of a previous patch

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

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:402
&gt; +String ScrollingCoordinator::mainThreadScrollingReasonsAsText(MainThreadScrollingReasons reasons)

This refactoring appears to be largely unrelated to the rest of the patch.  If you are feeling blocked on this patch, you might consider doing this code-motion in a separate patch.  Just moving where this string building happens (and removing the trailing comma and updating the one affected layout test) is a trivial patch which even I (or other non-layer-saavy folks) could review in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788825</commentid>
    <comment_count>57</comment_count>
      <attachid>178840</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-12-11 14:54:56 -0800</bug_when>
    <thetext>Comment on attachment 178840
Update test to cover issue of a previous patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:3152
&gt; +    } else if (compositor()-&gt;fixedPositionLayerNotCompositedReason(this) == RenderLayerCompositor::LayerBoundsOutOfView) {
&gt; +        // Don&apos;t paint out-of-view fixed position layers (when doing prepainting) because they will never be visible
&gt; +        // unless their position or viewport size is changed.
&gt; +        return;

Could you put this in a separate patch?  It&apos;s a different thing and not really directly related to the ScrollingCoordinator behavior change, although it&apos;s using the same infrastructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788834</commentid>
    <comment_count>58</comment_count>
      <attachid>178840</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 15:01:11 -0800</bug_when>
    <thetext>Comment on attachment 178840
Update test to cover issue of a previous patch

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

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:3152
&gt;&gt; +        return;
&gt; 
&gt; Could you put this in a separate patch?  It&apos;s a different thing and not really directly related to the ScrollingCoordinator behavior change, although it&apos;s using the same infrastructure.

Filed bug 104724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789021</commentid>
    <comment_count>59</comment_count>
      <attachid>178928</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 17:20:54 -0800</bug_when>
    <thetext>Created attachment 178928
Smaller patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789041</commentid>
    <comment_count>60</comment_count>
      <attachid>178928</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-12-11 17:34:29 -0800</bug_when>
    <thetext>Comment on attachment 178928
Smaller patch

We discussed the placement of the visibility checks and it seems like since it depends on composited bounds doing it in RenderLayerCompositor and querying the result later is the right thing to do.  I think we could tweak exactly how that state is maintained and carried forward, but this seems like a good start.

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789045</commentid>
    <comment_count>61</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 17:37:09 -0800</bug_when>
    <thetext>Thanks James.
Will rebase after the patch of bug 104303 (in CQ now) landed to resolve the conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789084</commentid>
    <comment_count>62</comment_count>
      <attachid>178940</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-11 18:21:15 -0800</bug_when>
    <thetext>Created attachment 178940
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789160</commentid>
    <comment_count>63</comment_count>
      <attachid>178940</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 21:15:29 -0800</bug_when>
    <thetext>Comment on attachment 178940
For landing

Clearing flags on attachment: 178940

Committed r137409: &lt;http://trac.webkit.org/changeset/137409&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789161</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 21:15:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792207</commentid>
    <comment_count>65</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-15 14:45:50 -0800</bug_when>
    <thetext>The DescendantOfTransformedElement enum added here is not accurate. The container for a Fixed element may be another Fixed element. It should be renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792209</commentid>
    <comment_count>66</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-15 14:47:04 -0800</bug_when>
    <thetext>I also dislike how requiresCompositingForPosition() has an out param named FixedPositionLayerNotCompositedReason. Who says only Fixed things get layers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792906</commentid>
    <comment_count>67</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-17 12:06:09 -0800</bug_when>
    <thetext>(In reply to comment #66)
&gt; I also dislike how requiresCompositingForPosition() has an out param named FixedPositionLayerNotCompositedReason. Who says only Fixed things get layers?

For now RLC seems to assume requiresCompositingForPosition() is for fixed things only:
  In RenderLayerCompositor::reasonForCompositing():
    if (requiresCompositingForPosition(renderer, layer))
        return &quot;position: fixed&quot;;

So how about renaming requiresCompositingForPosition to requiresCompositingForFixedPosition?

However FixedPositionLayerNotCompositedReason is also an output parameter in needsToBeComposited() and requiresCompositingLayer(), so would it be better to make the parameter more generic? For example, make the value a bit field enum (or struct) and any requiresCompositingForXXX() function can add bits to it, so FixedPositionLayerNotCompositedReason might be LayerCompositingStatusFlags.

An related idea is to record the info in RenderLayer with a bit field instead of in the map in RLC. Just tested on 64bit system, sizeof(RenderLayer)=288 and there are at least 16bit for additional bit fields without increasing the size. On 32bit system, sizeof(RenderLayer)=204 and adding 1 bit will increase the size to 208.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793055</commentid>
    <comment_count>68</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-17 14:51:40 -0800</bug_when>
    <thetext>(In reply to comment #67)
&gt; (In reply to comment #66)
&gt; &gt; I also dislike how requiresCompositingForPosition() has an out param named FixedPositionLayerNotCompositedReason. Who says only Fixed things get layers?
&gt; 
&gt; For now RLC seems to assume requiresCompositingForPosition() is for fixed things only:
&gt;   In RenderLayerCompositor::reasonForCompositing():
&gt;     if (requiresCompositingForPosition(renderer, layer))
&gt;         return &quot;position: fixed&quot;;
&gt; 
&gt; So how about renaming requiresCompositingForPosition to requiresCompositingForFixedPosition?
&gt; 
&gt; However FixedPositionLayerNotCompositedReason is also an output parameter in needsToBeComposited() and requiresCompositingLayer(), so would it be better to make the parameter more generic? For example, make the value a bit field enum (or struct) and any requiresCompositingForXXX() function can add bits to it, so FixedPositionLayerNotCompositedReason might be LayerCompositingStatusFlags.
&gt; 
&gt; An related idea is to record the info in RenderLayer with a bit field instead of in the map in RLC. Just tested on 64bit system, sizeof(RenderLayer)=288 and there are at least 16bit for additional bit fields without increasing the size. On 32bit system, sizeof(RenderLayer)=204 and adding 1 bit will increase the size to 208.

The reason I made the comment is because I&apos;m adding support for position:sticky here, so it&apos;s &quot;viewport-constrained&quot; things now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794070</commentid>
    <comment_count>69</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-18 14:41:47 -0800</bug_when>
    <thetext>(In reply to comment #68)
&gt; The reason I made the comment is because I&apos;m adding support for position:sticky here, so it&apos;s &quot;viewport-constrained&quot; things now.

Would you like to change the names or refactor in your position:sticky change, or me to change of the names?

I think at least I should correct the name DescendantOfTransformedElement and related previously existing comments. I&apos;d do that soon.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175100</attachid>
            <date>2012-11-19 17:47:27 -0800</date>
            <delta_ts>2012-11-20 10:41:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102543-20121119174517.patch</filename>
            <type>text/plain</type>
            <size>25538</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY1NjgwMDcyZjhhZTE4
NjYwZWJkMTlhNjg1OTlkNjNjMzNlM2M2Zi4uZGRhMjEyNDNlOWQ3ZmZkODIxNjc4NzhiZmZhYzEz
MmVmMDE2ZWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTExLTE5ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBhIGZsYWcgaXNPdXRPZlZpZXdG
aXhlZFBvc2l0aW9uZWQgaW4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCB0byBpbmRpY2F0ZSBpdCdz
IGZvciBhbiBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50LgorICAgICAgICBUaGUgZmxhZyBpcyB1
c2VkIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorICAgICAgICAxKSBpbiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKCk6IHRvIGV4Y2x1ZGUg
dGhlIGVsZW1lbnRzIHRvIGF2b2lkIHNsb3cgc2Nyb2xsaW5nLgorICAgICAgICAyKSBpbiBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllcigpOiB0byBhdm9pZCBwcmUtcGFpbnRpbmcgdGhlIG91dC1vZi12
aWV3IGZpeGVkLXBvc2l0aW9uZWQgbGF5ZXJzLgorCisgICAgICAgIEJ5IHRoZSB3YXkgZml4ZWQg
dGhlIGlzc3VlIG9mIGludGVyc2VjdGlvbiBjaGVja2luZyBvZiBmaXhlZC1wb3NpdGlvbmVkIGVs
ZW1lbnRzOgorICAgICAgICAxKSBzaG91bGQgY29uc2lkZXIgdGhlIHBhZ2Ugc2NhbGU7CisgICAg
ICAgIDIpIGZpeCBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkgd2hlbiBjb250ZW50U2l6
ZSA8IHZpc2libGVDb250ZW50UmVjdC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbAorICAgICAg
ICAgICAgICBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Yt
dmlldy5odG1sCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KTogRml4ZWQgaXNzdWUgd2hlbiBjb250ZW50c1Np
emUgPCB2aXNpYmxlQ29udGVudFJlY3QuCisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxPZmZzZXRG
b3JGaXhlZFBvc2l0aW9uKTogRml4ZWQgaXNzdWUgd2hlbiBjb250ZW50c1NpemUgPCB2aXNpYmxl
Q29udGVudFJlY3QuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFz
VmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKTogRXhjbHVkZSBvdXQtb2YtdmlldyBmaXhl
ZCBwb3NpdGlvbiBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6IEV4dHJhY3RlZCBmcm9tIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMgZm9yIGxheW91dCB0ZXN0
cy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMp
OiBNb3ZlZCBjb2RlIGZvciBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyB0byBTY3JvbGxpbmdD
b29yZGluYXRvci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKTogRG9uJ3QgcGFpbnQgb3V0
LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllciB3aGVuIHByZS1wYWludGluZyBvdXQtb2Yt
dmlldyBjb250ZW50cy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXND
b21wb3NpdGluZ0ZvclBvc2l0aW9uKTogRml4ZWQgaXNzdWUgb2YgdGVzdGluZyBpbnRlcnNlY3Rp
b24gb2YgdmlzaWJsZSByZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJl
bmRlckxheWVyTW9kZWxPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpp
c091dE9mVmlld0ZpeGVkUG9zaXRpb25lZCk6IEFkZGVkIGZsYWcgdG8gaW5kaWNhdGUgb3V0LW9m
LXZpZXcgZml4ZWQgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxP
YmplY3Q6OnNldElzT3V0T2ZWaWV3Rml4ZWRQb3NpdGlvbmVkKTogQWRkZWQgZmxhZyB0byBpbmRp
Y2F0ZSBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50LgorICAgICAgICAoUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDogQWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnMgZm9yIGxheW91dCB0ZXN0cy4KKwogMjAxMi0xMS0xOSAgQWxwaGEgTGFtICA8aGNsYW1AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQnVpbGQgZml4IGZvciBDaHJvbWl1
bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDI1MDQyMTQ0ZWNmYmJkMWMyZTJlZTRmYThhMWM1Y2Mx
MzhiZGUwOGEuLjA1M2M5MmUwMmVmMTIwYWFkYmY3NzBiNDgwZWRmNjk3NTZmNGMzN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMjU1LDYgKzI1NSwxNyBAQCBTdHJpbmcgUGFnZTo6c2Nyb2xsaW5n
U3RhdGVUcmVlQXNUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBQYWdl
OjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCit7CisgICAgaWYgKERvY3VtZW50
KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+
dXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgcmV0
dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01vZGVJbmZvIHsK
ICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCmluZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0ZmEzNmIwMGMuLjZjMzk1
NTBmYWUwNWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0x
OTYsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxpbmdDb29y
ZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAgICBTdHJpbmcgc2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsg
cmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRl
eCBkMjFiMGU5OTI3ZDQ5MzFhZWVlN2M1ZWE2MWY1NjU5OWY2OGY2YjczLi4xYmRhOGU4ZTIwODg2
MGQzNDI3Njk2ZDU1OGYxOTMzOTAzOTI0MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NSwzNyArNjUs
MzIgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsaW5n
Q29vcmRpbmF0b3IocGFnZSkpOwogfQogCi1zdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxP
ZmZzZXQoaW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgbWF4VmFsdWUsIGludCBzY3JvbGxPcmlnaW4s
IGZsb2F0IGRyYWdGYWN0b3IpCitzdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQo
aW50IHZpc2libGVDb250ZW50U2l6ZSwgaW50IGNvbnRlbnRzU2l6ZSwgaW50IHNjcm9sbFBvc2l0
aW9uLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29sIGZpeGVk
RWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgaWYgKCFtYXhWYWx1ZSkKKyAg
ICBpbnQgbWF4VmFsdWUgPSBjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemU7CisgICAg
aWYgKG1heFZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFzY3JvbGxP
cmlnaW4pIHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgMCkKLSAgICAgICAgICAgIHNj
cm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24gPiBtYXhW
YWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDw9IDApCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCiAgICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbiA9IG1heFZhbHVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChz
Y3JvbGxQb3NpdGlvbiA+IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7Ci0gICAg
ICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQorICAgICAgICBpZiAoc2Ny
b2xsUG9zaXRpb24gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoc2Ny
b2xsUG9zaXRpb24gPCAtbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IC1t
YXhWYWx1ZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICogZHJhZ0Zh
Y3RvcjsKKworICAgIGZsb2F0IGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRp
dmVUb0ZyYW1lID8gMSA6IChjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemUgKiBmcmFt
ZVNjYWxlRmFjdG9yKSAvIG1heFZhbHVlOworICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAqIGRy
YWdGYWN0b3IgLyBmcmFtZVNjYWxlRmFjdG9yOwogfQogCiBJbnRTaXplIHNjcm9sbE9mZnNldEZv
ckZpeGVkUG9zaXRpb24oY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9vbCBm
aXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIEludFNpemUgbWF4T2Zm
c2V0KGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCksIGNv
bnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0gICAg
Ci0gICAgRmxvYXRTaXplIGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVU
b0ZyYW1lID8gRmxvYXRTaXplKDEsIDEpIDogRmxvYXRTaXplKAotICAgICAgICAoY29udGVudHNT
aXplLndpZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAqIGZyYW1lU2NhbGVGYWN0
b3IpIC8gbWF4T2Zmc2V0LndpZHRoKCksCi0gICAgICAgIChjb250ZW50c1NpemUuaGVpZ2h0KCkg
LSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heE9m
ZnNldC5oZWlnaHQoKSk7Ci0KLSAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQo
c2Nyb2xsUG9zaXRpb24ueCgpLCBtYXhPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT3JpZ2luLngoKSwg
ZHJhZ0ZhY3Rvci53aWR0aCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHkgPSBmaXhl
ZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLnkoKSwgbWF4T2Zmc2V0LmhlaWdo
dCgpLCBzY3JvbGxPcmlnaW4ueSgpLCBkcmFnRmFjdG9yLmhlaWdodCgpIC8gZnJhbWVTY2FsZUZh
Y3Rvcik7Ci0KKyAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJsZUNv
bnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBzY3JvbGxQb3NpdGlvbi54
KCksIHNjcm9sbE9yaWdpbi54KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxlbWVudHNMYXlv
dXRSZWxhdGl2ZVRvRnJhbWUpOworICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNl
dCh2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSwgc2Ny
b2xsUG9zaXRpb24ueSgpLCBzY3JvbGxPcmlnaW4ueSgpLCBmcmFtZVNjYWxlRmFjdG9yLCBmaXhl
ZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKICAgICByZXR1cm4gSW50U2l6ZSh4LCB5
KTsKIH0KIApAQCAtMzQyLDcgKzMzNyw3IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhh
c1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAgICAg
ICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8
ICF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aWV3cG9ydENvbnN0cmFp
bmVkQm94TW9kZWxPYmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOwotICAgICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9i
amVjdC0+bGF5ZXIoKS0+YmFja2luZygpKQorICAgICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWlu
ZWRCb3hNb2RlbE9iamVjdC0+aXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQoKSAmJiAhdmlld3Bv
cnRDb25zdHJhaW5lZEJveE1vZGVsT2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk2LDQgKzM5
MSwzMCBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCit7CisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOworCisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Rm9yY2VkT25N
YWluVGhyZWFkKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiRm9yY2VkIG9uIG1haW4g
dGhyZWFkLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNT
bG93UmVwYWludE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgc2xv
dyByZXBhaW50IG9iamVjdHMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhl
ZExheWVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyB2aWV3cG9ydCBjb25z
dHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICIpOworICAg
IGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmpl
Y3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIG5vbi1sYXllciBmaXhlZCBv
YmplY3RzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0lt
YWdlRG9jdW1lbnQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJJcyBpbWFnZSBkb2N1
bWVudCwgIik7CisKKyAgICBpZiAoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSkKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5yZXNpemUoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSAtIDIpOworICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdAoreworICAgIC8v
IEJ5IGRlZmF1bHQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgYSBzY3JvbGxpbmdTdGF0
ZVRyZWUsIHJldHVybiB0aGUgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMuCisgICAgcmV0dXJu
IG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4
NjUwZWFiNDAyNWRlM2RiZDkyNmQwYzZmOTg1MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5
NWNlZjc4OWE4YjRlOGU0ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJ
c0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBz
dGF0aWMgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zKTsKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNB
c1RleHQoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1
MzNhZTZhZmUzNTk0NzM5YjZlODZkN2M1NThkMzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4
NWRlMzYzYWE2ODgzNjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTgg
KzIyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGll
cyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uCiAKICAgICBpZiAobV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50
KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJl
YWQgYmVjYXVzZTogIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJl
YWQpCi0gICAgICAgICAgICB0cyA8PCAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAg
ICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgICAgIHRz
IDw8ICJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5
ZXJzKQotICAgICAgICAgICAgdHMgPDwgIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3Rz
IHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIG5v
bi1sYXllciBmaXhlZCBvYmplY3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1h
Z2VEb2N1bWVudCkKLSAgICAgICAgICAgIHRzIDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAg
ICAgIHRzIDw8ICIpXG4iOworICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVh
ZCBiZWNhdXNlOiAiIDw8IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQpIDw8ICIpXG4iOwogICAgIH0KIAogICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
ICE9IEludFBvaW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IGJjNDlmZTgyMzFlNTU2NTJmZmMwYzM1NTAzMzFkNzU3OWZkOWQwMzMuLjA1OTAyZjA3
ODE5MTZmNDU1MDhmNWI4MGJiMmQ5MGFiMTEwNDQ3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzEwMyw2ICszMTAzLDEwIEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogCiB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50
RmxhZ3MpCiB7CisgICAgLy8gRG9uJ3QgcGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25l
ZCBsYXllciB3aGVuIHByZS1wYWludGluZyBvdXQtb2YtdmlldyBjb250ZW50cy4KKyAgICBpZiAo
bV9yZW5kZXJlci0+aXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChpc0NvbXBvc2l0
ZWQoKSkgewogICAgICAgICAvLyBUaGUgdXBkYXRpbmdDb250cm9sVGludHMoKSBwYWludGluZyBw
YXNzIGdvZXMgdGhyb3VnaCBjb21wb3NpdGluZyBsYXllcnMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDg3MGJmMWRkZmE3
Mzk1OWMwZWUwYTJjYzE4ZTllZmE4ODU5Y2YyMWMuLjBlN2RhZjlkNzJiOTRjNDAwZjk2NmZlOGY2
YmUyYjMwZDkxYWFlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xOTYxLDkgKzE5NjEsMTEgQEAgYm9vbCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmpl
Y3QqIHJlbmRlcmUKIAogICAgIC8vIEZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHRoYXQgYXJlIGlu
dmlzaWJsZSBpbiB0aGUgY3VycmVudCB2aWV3IGRvbid0IGdldCB0aGVpciBvd24gbGF5ZXIuCiAg
ICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKSkg
ewotICAgICAgICBJbnRSZWN0IHZpZXdCb3VuZHMgPSBJbnRSZWN0KEludFBvaW50KGZyYW1lVmll
dy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbigpKSwgZnJhbWVWaWV3LT5sYXlvdXRTaXpl
KCkpOwotICAgICAgICBJbnRSZWN0IGxheWVyQm91bmRzID0gY2FsY3VsYXRlQ29tcG9zaXRlZEJv
dW5kcyhsYXllciwgcm9vdFJlbmRlckxheWVyKCkpOwotICAgICAgICBpZiAoIXZpZXdCb3VuZHMu
aW50ZXJzZWN0cyhsYXllckJvdW5kcykpCisgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9
IGNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIsIHJvb3RSZW5kZXJMYXllcigpKTsKKyAg
ICAgICAgbGF5ZXJCb3VuZHMuc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBib29s
IGlzT3V0T2ZWaWV3ID0gIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0
cyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyQm91bmRzKSk7CisgICAgICAgIHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QocmVuZGVyZXIpLT5zZXRJc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZChpc091dE9m
Vmlldyk7CisgICAgICAgIGlmIChpc091dE9mVmlldykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcAppbmRleCBhZWIzMmI3YTJlM2ZkNWMwMDk4MTMwMmIwZDczNjJiM2Y2
NjYzZTcxLi5mMDdiZDk0OTY3YWZhNTc3ZmJmZGZkZmIxNzFjOWE0ODE0OGJlNjg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
CkBAIC00MCw2ICs0MCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c19sYXllcldh
c1NlbGZQYWludGluZyA9IGZhbHNlOwogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5
ZXJNb2RlbE9iamVjdChOb2RlKiBub2RlKQogICAgIDogUmVuZGVyT2JqZWN0KG5vZGUpCiAgICAg
LCBtX2xheWVyKDApCisgICAgLCBtX2lzT3V0T2ZWaWV3Rml4ZWRQb3NpdGlvbmVkKGZhbHNlKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaAppbmRleCBjNjI0MWQzNzc1MTM5NTM1ZjkwZmM2MDU2YTQ0NDI0ZTlhZDM4NTFlLi4y
NDZlZWIxYjUyYmFjNmM4YjhiZDBjZTFhYzllODNhNTgyZDhhNzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKQEAgLTQ2LDYgKzQ2
LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCA9
IDA7CiAKKyAgICBib29sIGlzT3V0T2ZWaWV3Rml4ZWRQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZDsgfQorICAgIHZvaWQgc2V0SXNPdXRPZlZp
ZXdGaXhlZFBvc2l0aW9uZWQoYm9vbCBmbGFnKSB7IG1faXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9u
ZWQgPSBmbGFnOyB9CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUxheWVyKCk7CiAKQEAg
LTU1LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNMYXllck1vZGVsT2Jq
ZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUmVuZGVyTGF5ZXIq
IG1fbGF5ZXI7CisgICAgYm9vbCBtX2lzT3V0T2ZWaWV3Rml4ZWRQb3NpdGlvbmVkIDogMTsKIAog
ICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0
eWxlRGlkQ2hhbmdlCiAgICAgc3RhdGljIGJvb2wgc193YXNGbG9hdGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3M2ZmNDQ3MWJhZjZmYTQxMDliMDRmNDNlZmM2ZDQy
OGMxNzkxYjJiLi4yYzY2MDYyZGE4YzNjYmExYTFiY2IxZWVhMDY5ZjQ4YzkyZmRmNTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMzkyLDYgKzEzOTIsMjAgQEAgU3Ry
aW5nIEludGVybmFsczo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0KCk7CiB9CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAg
aWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQ
YWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwYWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29uc0FzVGV4dCgpOworfQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVu
dFJlc291cmNlcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
ewogICAgIGlmICghZG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGExOTQ0MzViNTMzOGY5ODZkZTk4M2E0MjE4MjE4MWVjMDE4MjFlNjEuLjAzMjY3OTMxNjhkMTZm
MTkyOGQ0ZDQxMTU1ZGJkOGQ4YWE1ZjIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMjA4LDYgKzIwOCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNU
ZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAg
ICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CisKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRp
bmdIYWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGYw
MWIzNWRkODMwN2ZjYzZiZGM1ZmFiODc3MzZkYjIwZDI5NmJmMzEuLjE3ZTBhMDkyMDFkNmZlN2Zm
ODExMGQyZDZhZWE3N2Y5ZjFiOTcwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTE2NSw2ICsxNjUsNyBAQAogICAgIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4g
RG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBE
T01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQp
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1Rl
eHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDQ0YzIwYmE3YzYwOTU3N2QzYTgxZmVjYzg4MjFkMzZmNDM5NjMyNTcuLjlhMDAzMjJhNTQ0MjFh
NmU5OThjY2FlMDQwZDI5MjBhNGMxM2NlZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0x
MS0xOSAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdCgp
IHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZC9tb2RpZmll
ZCB0ZXN0IHRvIGVuc3VyZSBzbG93LXNjcm9sbGluZyBpcyBub3QgdHJpZ2dlcmVkIGJ5IG91dC1v
Zi12aWV3IGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHMsCisgICAgICAgIGFuZCBlbnN1cmUgb3V0
LW9mLXZpZXcgY2hlY2tpbmcgaXMgY29ycmVjdCB3aGVuIHBhZ2UgaXMgc2NhbGVkLgorCisgICAg
ICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZp
ZXctc2NhbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91
dC1vZi12aWV3Lmh0bWw6IEVuc3VyZSBzbG93LXNjcm9sbGluZyBpcyBub3QgdHJpZ2dlcmVkLiBF
eHBlY3RhdGlvbiBpcyB1bmNoYW5nZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBVcGRhdGVk
IGFjY29yZGluZyB0byB0aGUgY2hhbmdlIG9mIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zLgor
CiAyMDEyLTExLTE5ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgog
CiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgdGlsZXMgb2YgYSBsYXllciB3
aGVuIHRoZXkgYXJlIG9mZiB0aGUgdmlld3BvcnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2Fs
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTM3NjY1NDgyOWRjYmJjZDlkZjhkMmJlMmIyYzAxNjEwNjNlNjFiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYzIEBACitOb3Qg
c2NhbGVkOgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA3ODUuMDAgMTAxNi4wMCkKKyAgKGNo
aWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUuMDAgMTAxNi4w
MCkKKyAgICAgIChjaGlsZHJlbiAyCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAg
KHBvc2l0aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisg
ICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAw
IDEwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2FsZT0wLjU6Ciso
R3JhcGhpY3NMYXllcgorICAoYm91bmRzIDQwMC4wMCA1MDguMDApCisgIChjaGlsZHJlbiAxCisg
ICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChhbmNob3IgMC4wMCAwLjAwKQorICAgICAgKGJvdW5k
cyA4MDAuMDAgMTAxNi4wMCkKKyAgICAgICh0cmFuc2Zvcm0gWzAuNTAgMC4wMCAwLjAwIDAuMDBd
IFswLjAwIDAuNTAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAw
LjAwIDEuMDBdKQorICAgICAgKGNoaWxkcmVuIDQKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAocG9zaXRpb24gOC4wMCAxMDA4LjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAg
MTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9z
aXRpb24gMTAwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAg
ICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gNjAwLjAw
IDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAg
ICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTEuNToKKyhHcmFwaGljc0xheWVyCisg
IChib3VuZHMgMTI3Mi4wMCAxNTI0LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xh
eWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgICAgIChib3VuZHMgODQ4LjAwIDEwMTYu
MDApCisgICAgICAodHJhbnNmb3JtIFsxLjUwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAxLjUwIDAu
MDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAg
ICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5k
cyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3Np
dGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ0YmYxNzQyOTE5NDFmM2I0ODM2MDQ4MGU1MzZjNDZmYTZmZTM5NmEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1w
b3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICAuZml4ZWQgeworICAgICAg
cG9zaXRpb246IGZpeGVkOworICAgICAgd2lkdGg6IDEwcHg7CisgICAgICBoZWlnaHQ6IDEwcHg7
CisgICAgfQorICA8L3N0eWxlPgorCisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0
cnVlKTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0
YWNraW5nQ29udGV4dCh0cnVlKTsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgIGFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxh
eWVyVHJlZSIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQp
OworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMo
ZG9jdW1lbnQpOworCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0
b3IoMC41LCAwLCAwKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWREb3duIikuaW5uZXJU
ZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkRG93
biIpLmlubmVyVGV4dCA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1
bWVudCk7CisKKyAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9y
KDEuNSwgMCwgMCk7CisKKyAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZVNjYWxlZFVwIikuaW5uZXJU
ZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRV
cCIpLmlubmVyVGV4dCA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1
bWVudCk7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
IH0sIDApOworICAgICAgICB9LCAwKTsKKyAgICAgIH0sIGZhbHNlKTsKKyAgICB9CisgIDwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgPGRpdiBzdHlsZT0iaGVpZ2h0OiAxMDAwcHgiPgor
ICAgIE5vdCBzY2FsZWQ6CisgICAgPHByZSBpZD0ibGF5ZXJUcmVlIj48L3ByZT4KKyAgICA8cHJl
IGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+CisgICAgU2NhbGU9MC41Ogor
ICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZERvd24iPjwvcHJlPgorICAgIDxwcmUgaWQ9Im1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkRG93biI+PC9wcmU+CisgICAgU2NhbGU9MS41
OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZFVwIj48L3ByZT4KKyAgICA8cHJlIGlkPSJt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZFVwIj48L3ByZT4KKyAgPC9kaXY+CisKKyAg
PCEtLSBObyBsYXllciBpbiBhbnkgY2FzZS4gLS0+CisgIDxkaXYgY2xhc3M9ImZpeGVkIiBzdHls
ZT0idG9wOiAtMTAwcHgiPjwvZGl2PgorCisgIDwhLS0gSGFzIGNvbXBvc2l0ZWQgbGF5ZXIgd2hl
biBzY2FsZWQgZG93bjsgbm8gbGF5ZXIgd2hlbiBub3Qgc2NhbGVkIG9yIHNjYWxlZCB1cC4gLS0+
CisgIDxkaXYgY2xhc3M9ImZpeGVkIj48L2Rpdj4KKyAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxl
PSJ0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KKworICA8IS0tIEhhcyBjb21wb3NpdGVk
IGxheWVyIHdoZW4gbm90IHNjYWxlZCBhbmQgc2NhbGVkIGRvd247IG5vIGxheWVyIHNjYWxlZCB1
cC4gLS0+CisgIDxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDYwMHB4
Ij48L2Rpdj4KKworICA8IS0tIEFsd2F5cyBoYXMgY29tcG9zaXRlZCBsYXllci4gLS0+CisgIDxk
aXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDBweCI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1s
CmluZGV4IGMyZjZlNDkyMDMwM2QxNjhlM2EwZTEwYjM2NjAzNzhlMDA5ZjllZGIuLjMwNmUwYjE2
MDRmYzY5YzE0MWE5MjUyZmVhNWNjNWQ1NjlhODJhMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9z
aXRpb24tb3V0LW9mLXZpZXcuaHRtbApAQCAtMTgsNyArMTgsOCBAQAogICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllcnRyZWUi
KS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQg
PSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyIpLmlubmVy
VGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1l
bnQpOwogICAgICAgfSwgZmFsc2UpOwogICAgIH0KICAgPC9zY3JpcHQ+CkBAIC0yNiw3ICsyNyw4
IEBACiAKIDxib2R5PgogICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+Ci0gICAgPHByZSBp
ZD0ibGF5ZXJ0cmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJsYXllclRyZWUiPjwvcHJlPgorICAg
IDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIj48L3ByZT4KICAgPC9kaXY+CiAK
ICAgPCEtLSBOZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgZ2V0cyBpdHMgb3duIGxh
eWVyLiAtLT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xs
aW5nLWV4cGVjdGVkLnR4dAppbmRleCBiZTQwODBjZjFjYmFhOGRkMWNlYjFmOWRiMTIyNWM4ZjMx
MTE1YjgzLi4zMmVmMGNlNWNjNzU5ZWZiZjdhMDIwZWM0ZjFiYmIxOGJkMjBlMmFjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJl
ZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQu
dHh0CkBAIC0xLDYgKzEsNiBAQAogKFNjcm9sbGluZyBub2RlCiAgICh2aWV3cG9ydCByZWN0IDAg
MCA4MDAgNjAwKQogICAoY29udGVudHMgc2l6ZSA4MDAgNjAwKQotICAoU2Nyb2xsaW5nIG9uIG1h
aW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgKQorICAoU2Nyb2xs
aW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cykKICkK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175244</attachid>
            <date>2012-11-20 10:41:35 -0800</date>
            <delta_ts>2012-11-20 11:57:18 -0800</delta_ts>
            <desc>Add symbol</desc>
            <filename>bug-102543-20121120103923.patch</filename>
            <type>text/plain</type>
            <size>30101</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY1NjgwMDcyZjhhZTE4
NjYwZWJkMTlhNjg1OTlkNjNjMzNlM2M2Zi4uNzE4OTA4YjExNDdhNDRhODY0OTY5MDlmZTRiZTA0
ZTFlNjZjZjljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTExLTE5ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBhIGZsYWcgaXNPdXRPZlZpZXdG
aXhlZFBvc2l0aW9uZWQgaW4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCB0byBpbmRpY2F0ZSBpdCdz
IGZvciBhbiBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50LgorICAgICAgICBUaGUgZmxhZyBpcyB1
c2VkIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorICAgICAgICAxKSBpbiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKCk6IHRvIGV4Y2x1ZGUg
dGhlIGVsZW1lbnRzIHRvIGF2b2lkIHNsb3cgc2Nyb2xsaW5nLgorICAgICAgICAyKSBpbiBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllcigpOiB0byBhdm9pZCBwcmUtcGFpbnRpbmcgdGhlIG91dC1vZi12
aWV3IGZpeGVkLXBvc2l0aW9uZWQgbGF5ZXJzLgorCisgICAgICAgIEJ5IHRoZSB3YXkgZml4ZWQg
dGhlIGlzc3VlIG9mIGludGVyc2VjdGlvbiBjaGVja2luZyBvZiBmaXhlZC1wb3NpdGlvbmVkIGVs
ZW1lbnRzOgorICAgICAgICAxKSBzaG91bGQgY29uc2lkZXIgdGhlIHBhZ2Ugc2NhbGU7CisgICAg
ICAgIDIpIGZpeCBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkgd2hlbiBjb250ZW50U2l6
ZSA8IHZpc2libGVDb250ZW50UmVjdC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbAorICAgICAg
ICAgICAgICBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Yt
dmlldy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnNBc1RleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KTog
Rml4ZWQgaXNzdWUgd2hlbiBjb250ZW50c1NpemUgPCB2aXNpYmxlQ29udGVudFJlY3QuCisgICAg
ICAgIChXZWJDb3JlOjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKTogRml4ZWQgaXNzdWUg
d2hlbiBjb250ZW50c1NpemUgPCB2aXNpYmxlQ29udGVudFJlY3QuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3Rz
KTogRXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cy4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dCk6IEV4dHJhY3RlZCBmcm9tIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVt
cFByb3BlcnRpZXMgZm9yIGxheW91dCB0ZXN0cy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3Jv
bGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMpOiBNb3ZlZCBjb2RlIGZvciBtYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29ucyB0byBTY3JvbGxpbmdDb29yZGluYXRvci5jcHAuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludExheWVyKTogRG9uJ3QgcGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXll
ciB3aGVuIHByZS1wYWludGluZyBvdXQtb2YtdmlldyBjb250ZW50cy4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKTogRml4ZWQg
aXNzdWUgb2YgdGVzdGluZyBpbnRlcnNlY3Rpb24gb2YgdmlzaWJsZSByZWN0LgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojppc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZCk6IEFk
ZGVkIGZsYWcgdG8gaW5kaWNhdGUgb3V0LW9mLXZpZXcgZml4ZWQgZWxlbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNldElzT3V0T2ZWaWV3Rml4ZWRQb3Np
dGlvbmVkKTogQWRkZWQgZmxhZyB0byBpbmRpY2F0ZSBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50
LgorICAgICAgICAoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjptYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkZWQgc2V0dGlu
Z3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0cy4KKwogMjAxMi0x
MS0xOSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZp
ZXdlZC4gQnVpbGQgZml4IGZvciBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MjY2N2NjMjAyZGYx
MWZiMDhhYjRkNmQzOTllZWM2Y2ZjMmY5ZjUwLi5mMDI1MmM5YzNiZmFmZWEyNmZiOWUyZGE1NDNl
ODc4ZjVjY2U5NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTEtMjAgIFhp
YW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQg
ZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgQWRk
IHN5bWJvbC4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2Vi
S2l0MkNGTGl0ZS5kZWY6CisKIDIwMTItMTEtMTkgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlbW92ZSB0
aWxlcyBvZiBhIGxheWVyIHdoZW4gdGhleSBhcmUgb2ZmIHRoZSB2aWV3cG9ydC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggMzk3Nzc2OWRkYjYwMjVmODg3ZTdkNWU1OTJlMGM4MDI4Y2MwYTY2MS4u
ZDE4Njk3NTNlZDI2ZDIzYjU3MTAwMWM1MjBjNDllMTUxY2Y5YjM2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc0Nyw2ICs3NDcsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMjVzdXNwZW5kU2NyaXB0ZWRBbmltYXRp
b25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXpl
RWkKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5RWQK
K19fWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2CiBf
X1pON1dlYkNvcmU0UGFnZTMyc2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWRFYgogX19a
TjdXZWJDb3JlNFBhZ2UzNXJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRXYKIF9f
Wk43V2ViQ29yZTRQYWdlMzZzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnNFYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggMjUwNDIxNDRlY2ZiYmQxYzJlMmVlNGZhOGExYzVjYzEzOGJk
ZTA4YS4uMDUzYzkyZTAyZWYxMjBhYWRiZjc3MGI0ODBlZGY2OTc1NmY0YzM3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yNTUsNiArMjU1LDE3IEBAIFN0cmluZyBQYWdlOjpzY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIFBhZ2U6Om1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkKK3sKKyAgICBpZiAoRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIGRvY3VtZW50LT51cGRh
dGVMYXlvdXQoKTsKKworICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQorICAgICAgICByZXR1cm4g
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCk7
CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIHN0cnVjdCBWaWV3TW9kZUluZm8gewogICAg
IGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgUGFnZTo6Vmlld01vZGUgdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggNDQzYWIyNjBiMTk0YjM3NWViZWVlZmNkYTc0YzBiNjRmYTM2YjAwYy4uNmMzOTU1MGZh
ZTA1YWJjYzQ0NjMyNDU2ODVjMDBmMjVkZTgwZDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE5Niw2
ICsxOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcigpOwogCiAgICAgICAgIFN0cmluZyBzY3JvbGxpbmdT
dGF0ZVRyZWVBc1RleHQoKTsKKyAgICAgICAgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KCk7CiAKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogICAgICAgICBQcm9ncmVzc1RyYWNrZXIqIHByb2dyZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGQy
MWIwZTk5MjdkNDkzMWFlZWU3YzVlYTYxZjU2NTk5ZjY4ZjZiNzMuLjFiZGE4ZThlMjA4ODYwZDM0
Mjc2OTZkNTU4ZjE5MzM5MDM5MjQyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTY1LDM3ICs2NSwzMiBA
QCBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
Y3JlYXRlKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29y
ZGluYXRvcihwYWdlKSk7CiB9CiAKLXN0YXRpYyBpbnQgZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNl
dChpbnQgc2Nyb2xsUG9zaXRpb24sIGludCBtYXhWYWx1ZSwgaW50IHNjcm9sbE9yaWdpbiwgZmxv
YXQgZHJhZ0ZhY3RvcikKK3N0YXRpYyBpbnQgZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNldChpbnQg
dmlzaWJsZUNvbnRlbnRTaXplLCBpbnQgY29udGVudHNTaXplLCBpbnQgc2Nyb2xsUG9zaXRpb24s
IGludCBzY3JvbGxPcmlnaW4sIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVt
ZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSkKIHsKLSAgICBpZiAoIW1heFZhbHVlKQorICAgIGlu
dCBtYXhWYWx1ZSA9IGNvbnRlbnRzU2l6ZSAtIHZpc2libGVDb250ZW50U2l6ZTsKKyAgICBpZiAo
bWF4VmFsdWUgPD0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIXNjcm9sbE9yaWdp
bikgewotICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCAwKQotICAgICAgICAgICAgc2Nyb2xs
UG9zaXRpb24gPSAwOwotICAgICAgICBlbHNlIGlmIChzY3JvbGxQb3NpdGlvbiA+IG1heFZhbHVl
KQorICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPD0gMCkKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPiBtYXhWYWx1ZSkKICAgICAgICAgICAgIHNj
cm9sbFBvc2l0aW9uID0gbWF4VmFsdWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHNjcm9s
bFBvc2l0aW9uID4gMCkKLSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAg
ZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24gPCAtbWF4VmFsdWUpCisgICAgICAgIGlmIChzY3JvbGxQ
b3NpdGlvbiA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChzY3JvbGxQ
b3NpdGlvbiA8IC1tYXhWYWx1ZSkKICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gLW1heFZh
bHVlOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24gKiBkcmFnRmFjdG9y
OworCisgICAgZmxvYXQgZHJhZ0ZhY3RvciA9IGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUgPyAxIDogKGNvbnRlbnRzU2l6ZSAtIHZpc2libGVDb250ZW50U2l6ZSAqIGZyYW1lU2Nh
bGVGYWN0b3IpIC8gbWF4VmFsdWU7CisgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICogZHJhZ0Zh
Y3RvciAvIGZyYW1lU2NhbGVGYWN0b3I7CiB9CiAKIEludFNpemUgc2Nyb2xsT2Zmc2V0Rm9yRml4
ZWRQb3NpdGlvbihjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29sIGZpeGVk
RWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgSW50U2l6ZSBtYXhPZmZzZXQo
Y29udGVudHNTaXplLndpZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSwgY29udGVu
dHNTaXplLmhlaWdodCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpKTsKLSAgICAKLSAg
ICBGbG9hdFNpemUgZHJhZ0ZhY3RvciA9IGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJh
bWUgPyBGbG9hdFNpemUoMSwgMSkgOiBGbG9hdFNpemUoCi0gICAgICAgIChjb250ZW50c1NpemUu
d2lkdGgoKSAtIHZpc2libGVDb250ZW50UmVjdC53aWR0aCgpICogZnJhbWVTY2FsZUZhY3Rvcikg
LyBtYXhPZmZzZXQud2lkdGgoKSwKLSAgICAgICAgKGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZp
c2libGVDb250ZW50UmVjdC5oZWlnaHQoKSAqIGZyYW1lU2NhbGVGYWN0b3IpIC8gbWF4T2Zmc2V0
LmhlaWdodCgpKTsKLQotICAgIGludCB4ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNldChzY3Jv
bGxQb3NpdGlvbi54KCksIG1heE9mZnNldC53aWR0aCgpLCBzY3JvbGxPcmlnaW4ueCgpLCBkcmFn
RmFjdG9yLndpZHRoKCkgLyBmcmFtZVNjYWxlRmFjdG9yKTsKLSAgICBpbnQgeSA9IGZpeGVkUG9z
aXRpb25TY3JvbGxPZmZzZXQoc2Nyb2xsUG9zaXRpb24ueSgpLCBtYXhPZmZzZXQuaGVpZ2h0KCks
IHNjcm9sbE9yaWdpbi55KCksIGRyYWdGYWN0b3IuaGVpZ2h0KCkgLyBmcmFtZVNjYWxlRmFjdG9y
KTsKLQorICAgIGludCB4ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNldCh2aXNpYmxlQ29udGVu
dFJlY3Qud2lkdGgoKSwgY29udGVudHNTaXplLndpZHRoKCksIHNjcm9sbFBvc2l0aW9uLngoKSwg
c2Nyb2xsT3JpZ2luLngoKSwgZnJhbWVTY2FsZUZhY3RvciwgZml4ZWRFbGVtZW50c0xheW91dFJl
bGF0aXZlVG9GcmFtZSk7CisgICAgaW50IHkgPSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHZp
c2libGVDb250ZW50UmVjdC5oZWlnaHQoKSwgY29udGVudHNTaXplLmhlaWdodCgpLCBzY3JvbGxQ
b3NpdGlvbi55KCksIHNjcm9sbE9yaWdpbi55KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxl
bWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpOwogICAgIHJldHVybiBJbnRTaXplKHgsIHkpOwog
fQogCkBAIC0zNDIsNyArMzM3LDcgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlz
aWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKEZyYW1lVmlldyogZnJhbWVWaWUKICAgICAgICAg
aWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkgfHwgIXZp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRC
b3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVsT2JqZWN0
LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJv
eE1vZGVsT2JqZWN0LT5pc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZCgpICYmICF2aWV3cG9ydENv
bnN0cmFpbmVkQm94TW9kZWxPYmplY3QtPmxheWVyKCktPmJhY2tpbmcoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTYsNCArMzkxLDMw
IEBAIFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnMgcmVhc29ucykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
CisKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5U
aHJlYWQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJl
YWQsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dS
ZXBhaW50T2JqZWN0cykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJl
cGFpbnQgb2JqZWN0cywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5
ZXJzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFp
bmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7CisgICAgaWYg
KHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMp
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVj
dHMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VE
b2N1bWVudCkKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50
LCAiKTsKKworICAgIGlmIChzdHJpbmdCdWlsZGVyLmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdC
dWlsZGVyLnJlc2l6ZShzdHJpbmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Cit7CisgICAgLy8gQnkg
ZGVmYXVsdCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSBhIHNjcm9sbGluZ1N0YXRlVHJl
ZSwgcmV0dXJuIHRoZSBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucy4KKyAgICByZXR1cm4gbWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGMyZjFmYTg2NTBl
YWI0MDI1ZGUzZGJkOTI2ZDBjNmY5ODUyMzUxZjIuLmYyNTEwY2NhNTEyN2JlMGZhODJjODk1Y2Vm
Nzg5YThiNGU4ZTQ4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTUwLDYgKzE1MCw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMo
R3JhcGhpY3NMYXllciosIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzRml4
ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KIAorICAgIHN0YXRp
YyBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnMpOworICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3IoUGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA1ZDM3YmUyZjUzM2Fl
NmFmZTM1OTQ3MzliNmU4NmQ3YzU1OGQzMzIzLi4xYWQ1ZmEyOGM2NzJkZTFiMDQ4YzgzOTg1ZGUz
NjNhYTY4ODM2NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTIyNywxOCArMjI3
LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRl
eHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb24KIAogICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIHsKICAgICAgICAgd3JpdGVJbmRlbnQodHMs
IGluZGVudCArIDEpOwotICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBi
ZWNhdXNlOiAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkZvcmNlZE9uTWFpblRocmVhZCkK
LSAgICAgICAgICAgIHRzIDw8ICJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICI7Ci0gICAgICAgIGlm
IChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxp
bmdDb29yZGluYXRvcjo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICAgICAgdHMgPDwg
IkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpI
YXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMp
Ci0gICAgICAgICAgICB0cyA8PCAiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0
aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgbm9uLWxh
eWVyIGZpeGVkIG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURv
Y3VtZW50KQotICAgICAgICAgICAgdHMgPDwgIklzIGltYWdlIGRvY3VtZW50IjsKLSAgICAgICAg
dHMgPDwgIilcbiI7CisgICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJl
Y2F1c2U6ICIgPDwgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkg
PDwgIilcbiI7CiAgICAgfQogCiAgICAgaWYgKG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gIT0g
SW50UG9pbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggYmM0OWZlODIzMWU1NTY1MmZmYzBjMzU1MDMzMWQ3NTc5ZmQ5ZDAzMy4uMDU5MDJmMDc4MTkx
NmY0NTUwOGY1YjgwYmIyZDkwYWIxMTA0NDczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTAzLDYgKzMxMDMsMTAgQEAgc3RhdGljIGlubGluZSBib29s
IHNob3VsZFN1cHByZXNzUGFpbnRpbmdMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiAKIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cykKIHsKKyAgICAvLyBEb24ndCBwYWludCBvdXQtb2YtdmlldyBmaXhlZC1wb3NpdGlvbmVkIGxh
eWVyIHdoZW4gcHJlLXBhaW50aW5nIG91dC1vZi12aWV3IGNvbnRlbnRzLgorICAgIGlmIChtX3Jl
bmRlcmVyLT5pc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm47CisK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGlzQ29tcG9zaXRlZCgp
KSB7CiAgICAgICAgIC8vIFRoZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3Mg
Z29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVycywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggODcwYmYxZGRmYTczOTU5
YzBlZTBhMmNjMThlOWVmYTg4NTljZjIxYy4uMGU3ZGFmOWQ3MmI5NGM0MDBmOTY2ZmU4ZjZiZTJi
MzBkOTFhYWUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTE5NjEsOSArMTk2MSwxMSBAQCBib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCog
cmVuZGVyZQogCiAgICAgLy8gRml4ZWQgcG9zaXRpb24gZWxlbWVudHMgdGhhdCBhcmUgaW52aXNp
YmxlIGluIHRoZSBjdXJyZW50IHZpZXcgZG9uJ3QgZ2V0IHRoZWlyIG93biBsYXllci4KICAgICBp
ZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKSB7Ci0g
ICAgICAgIEludFJlY3Qgdmlld0JvdW5kcyA9IEludFJlY3QoSW50UG9pbnQoZnJhbWVWaWV3LT5z
Y3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkpLCBmcmFtZVZpZXctPmxheW91dFNpemUoKSk7
Ci0gICAgICAgIEludFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRz
KGxheWVyLCByb290UmVuZGVyTGF5ZXIoKSk7Ci0gICAgICAgIGlmICghdmlld0JvdW5kcy5pbnRl
cnNlY3RzKGxheWVyQm91bmRzKSkKKyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gY2Fs
Y3VsYXRlQ29tcG9zaXRlZEJvdW5kcyhsYXllciwgcm9vdFJlbmRlckxheWVyKCkpOworICAgICAg
ICBsYXllckJvdW5kcy5zY2FsZShwYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIGJvb2wgaXNP
dXRPZlZpZXcgPSAhZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKGVu
Y2xvc2luZ0ludFJlY3QobGF5ZXJCb3VuZHMpKTsKKyAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChyZW5kZXJlciktPnNldElzT3V0T2ZWaWV3Rml4ZWRQb3NpdGlvbmVkKGlzT3V0T2ZWaWV3
KTsKKyAgICAgICAgaWYgKGlzT3V0T2ZWaWV3KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwCmluZGV4IGFlYjMyYjdhMmUzZmQ1YzAwOTgxMzAyYjBkNzM2MmIzZjY2NjNl
NzEuLmYwN2JkOTQ5NjdhZmE1NzdmYmZkZmRmYjE3MWM5YTQ4MTQ4YmU2ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAg
LTQwLDYgKzQwLDcgQEAgYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2xheWVyV2FzU2Vs
ZlBhaW50aW5nID0gZmFsc2U7CiBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJPYmplY3Qobm9kZSkKICAgICAsIG1f
bGF5ZXIoMCkKKyAgICAsIG1faXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQoZmFsc2UpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5oCmluZGV4IGM2MjQxZDM3NzUxMzk1MzVmOTBmYzYwNTZhNDQ0MjRlOWFkMzg1MWUuLjI0NmVl
YjFiNTJiYWM2YzhiOGJkMGNlMWFjOWU4M2E1ODJkOGE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaApAQCAtNDYsNiArNDYsOSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0ID0gMDsK
IAorICAgIGJvb2wgaXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzT3V0T2ZWaWV3Rml4ZWRQb3NpdGlvbmVkOyB9CisgICAgdm9pZCBzZXRJc091dE9mVmlld0Zp
eGVkUG9zaXRpb25lZChib29sIGZsYWcpIHsgbV9pc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZCA9
IGZsYWc7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZW5zdXJlTGF5ZXIoKTsKIApAQCAtNTUs
NiArNTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0xheWVyTW9kZWxPYmplY3Qo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBSZW5kZXJMYXllciogbV9s
YXllcjsKKyAgICBib29sIG1faXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQgOiAxOwogCiAgICAg
Ly8gVXNlZCB0byBzdG9yZSBzdGF0ZSBiZXR3ZWVuIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVE
aWRDaGFuZ2UKICAgICBzdGF0aWMgYm9vbCBzX3dhc0Zsb2F0aW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IDczZmY0NDcxYmFmNmZhNDEwOWIwNGY0M2VmYzZkNDI4YzE3
OTFiMmIuLjJjNjYwNjJkYThjM2NiYTFhMWJjYjFlZWEwNjlmNDhjOTJmZGY1NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEzOTIsNiArMTM5MiwyMCBAQCBTdHJpbmcg
SW50ZXJuYWxzOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJiBlYwogICAgIHJldHVybiBwYWdlLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1Rl
eHQoKTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMo
RG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgcmV0dXJuIHBhZ2UtPm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVz
b3VyY2VzKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAg
ICAgaWYgKCFkb2N1bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYTE5
NDQzNWI1MzM4Zjk4NmRlOTgzYTQyMTgyMTgxZWMwMTgyMWU2MS4uMDMyNjc5MzE2OGQxNmYxOTI4
ZDRkNDExNTVkYmQ4ZDhhYTVmMjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0yMDgsNiArMjA4LDggQEAgcHVibGljOgogICAgIFN0cmluZyByZXBhaW50UmVjdHNBc1RleHQo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIHNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAorICAgIFN0
cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKKwogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1
bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgYWxsb3dSb3VuZGluZ0hh
Y2tzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZjAxYjM1
ZGQ4MzA3ZmNjNmJkYzVmYWI4NzczNmRiMjBkMjk2YmYzMS4uMTdlMGEwOTIwMWQ2ZmU3ZmY4MTEw
ZDJkNmFlYTc3ZjlmMWI5NzA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtMTY1LDYgKzE2NSw3IEBACiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1
bWVudCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4
dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIERPTVN0
cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChp
biBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYKaW5kZXggODQxNmI5MTAxOWE5NzY5NjJjZjlmZmMwMzhkNmY4OGM1MjdjZTAxNS4u
ODA1ODNiNTcyMDdmMTE1Y2M0MmEyNWMxMDA1Zjg3MmYzMzBmZDc3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgpAQCAtMjAxLDYgKzIwMSw3IEBAIEVYUE9SVFMKICAgICAgICAgP2pzQXJyYXlAV2Vi
Q29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmpl
Y3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAgICAg
ICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2Vi
Q29yZUBAUUJFX05YWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBB
QEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAg
ICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZT
dHJpbmdAV1RGQEBYWgogICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUu
ZGVmCmluZGV4IGUwMmUyMzc3MTQ2YzZiMmUxZWRkMmUzM2Q1YWU5Y2UzMzEyYzMyOTEuLmUwOTg5
MjE4MGU1N2E2ZDg3ZmVlMTdhMmY3MmJlNzhmOGJmZGNhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0MkNGTGl0ZS5kZWYKQEAgLTE5Miw2ICsxOTIsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc0Fy
cmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xv
YmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBA
WgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNv
cmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoK
KyAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBA
UUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENoaWxkQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
CmluZGV4IGMxODc0NWM0NjI5YmU5YjY3YTg5MzdiMWY5MjExZGVhMmUwNzJhOTUuLjM3NTE4Mjcx
YjI1MWQ4ODFlNDZmYjlkMGIyNTcxYTEyNjkzOTUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgpAQCAtMzEsNiArMzEsNyBAQCBfWk43V2ViQ29yZTRQYWdlMTNzZXRQYWdpbmF0aW9uRVJLTlNf
MTBQYWdpbmF0aW9uRTsKIF9aTjdXZWJDb3JlNFBhZ2UxOHNldFBhZ2VTY2FsZUZhY3RvckVmUktO
U184SW50UG9pbnRFOwogX1pON1dlYkNvcmU0UGFnZTIwc2V0RGV2aWNlU2NhbGVGYWN0b3JFZjsK
IF9aTjdXZWJDb3JlNFBhZ2UyNHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEV2OworX1pON1dlYkNv
cmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRFdjsKIF9aTjdXZWJDb3Jl
NFBhZ2UxNnNldENhblN0YXJ0TWVkaWFFYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNT
dGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBDbGllbnRSZWN0RTsKIF9aTjdXZWJD
b3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBT
aGFkb3dSb290RTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA0NGMyMGJhN2M2MDk1NzdkM2E4MWZlY2M4ODIxZDM2ZjQzOTYz
MjU3Li45YTAwMzIyYTU0NDIxYTZlOTk4Y2NhZTA0MGQyOTIwYTRjMTNjZWYyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMTEtMTkgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dS
ZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3Np
dGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQvbW9kaWZpZWQgdGVzdCB0byBlbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90
IHRyaWdnZXJlZCBieSBvdXQtb2YtdmlldyBmaXhlZC1wb3NpdGlvbmVkIGVsZW1lbnRzLAorICAg
ICAgICBhbmQgZW5zdXJlIG91dC1vZi12aWV3IGNoZWNraW5nIGlzIGNvcnJlY3Qgd2hlbiBwYWdl
IGlzIHNjYWxlZC4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVk
LXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3
LXNjYWxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcg
aXMgbm90IHRyaWdnZXJlZC4gRXhwZWN0YXRpb24gaXMgdW5jaGFuZ2VkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4
cGVjdGVkLnR4dDogVXBkYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZSBvZiBtYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29ucy4KKwogMjAxMi0xMS0xOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3Zl
IHRpbGVzIG9mIGEgbGF5ZXIgd2hlbiB0aGV5IGFyZSBvZmYgdGhlIHZpZXdwb3J0LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUzNzY2NTQ4MjlkY2JiY2Q5ZGY4ZDJiZTJiMmMwMTYxMDYz
ZTYxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNy
ZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw2MyBAQAorTm90IHNjYWxlZDoKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNzg1
LjAwIDEwMTYuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChi
b3VuZHMgNzg1LjAwIDEwMTYuMDApCisgICAgICAoY2hpbGRyZW4gMgorICAgICAgICAoR3JhcGhp
Y3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91
bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAg
ICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAg
KQorKQorU2NhbGU9MC41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA0MDAuMDAgNTA4LjAw
KQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAg
MC4wMCkKKyAgICAgIChib3VuZHMgODAwLjAwIDEwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFsw
LjUwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAwLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAw
IDAuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgIChjaGlsZHJlbiA0CisgICAgICAg
IChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgMTAwOC4wMCkKKyAgICAg
ICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xh
eWVyCisgICAgICAgICAgKHBvc2l0aW9uIDEwMDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRz
IDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAg
ICAgKHBvc2l0aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDAp
CisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEw
LjAwIDEwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2FsZT0xLjU6
CisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDEyNzIuMDAgMTUyNC4wMCkKKyAgKGNoaWxkcmVu
IDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAo
Ym91bmRzIDg0OC4wMCAxMDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBbMS41MCAwLjAwIDAuMDAg
MC4wMF0gWzAuMDAgMS41MCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAw
LjAwIDAuMDAgMS4wMF0pCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAg
ICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmll
dy1zY2FsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGJmMTc0MjkxOTQxZjNiNDgzNjA0ODBlNTM2YzQ2
ZmE2ZmUzOTZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKQEAgLTAs
MCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+Cisg
ICAgLmZpeGVkIHsKKyAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgIHdpZHRoOiAxMHB4Owor
ICAgICAgaGVpZ2h0OiAxMHB4OworICAgIH0KKyAgPC9zdHlsZT4KKworICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGlu
Z0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Rml4
ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7CisgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAg
ICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJU
cmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKworICAgICAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7CisKKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVl
U2NhbGVkRG93biIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1l
bnQpOworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29uc1NjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFBhZ2VTY2FsZUZhY3RvcigxLjUsIDAsIDApOworCisgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRy
ZWVTY2FsZWRVcCIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1l
bnQpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSwgMCk7CisgICAgICB9LCBmYWxz
ZSk7CisgICAgfQorICA8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgc3R5bGU9
ImhlaWdodDogMTAwMHB4Ij4KKyAgICBOb3Qgc2NhbGVkOgorICAgIDxwcmUgaWQ9ImxheWVyVHJl
ZSI+PC9wcmU+CisgICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJl
PgorICAgIFNjYWxlPTAuNToKKyAgICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWREb3duIj48L3By
ZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZERvd24iPjwv
cHJlPgorICAgIFNjYWxlPTEuNToKKyAgICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWRVcCI+PC9w
cmU+CisgICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRVcCI+PC9w
cmU+CisgIDwvZGl2PgorCisgIDwhLS0gTm8gbGF5ZXIgaW4gYW55IGNhc2UuIC0tPgorICA8ZGl2
IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogLTEwMHB4Ij48L2Rpdj4KKworICA8IS0tIEhhcyBj
b21wb3NpdGVkIGxheWVyIHdoZW4gc2NhbGVkIGRvd247IG5vIGxheWVyIHdoZW4gbm90IHNjYWxl
ZCBvciBzY2FsZWQgdXAuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCI+PC9kaXY+CisgIDxkaXYg
Y2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDEwMDBweCI+PC9kaXY+CisKKyAg
PCEtLSBIYXMgY29tcG9zaXRlZCBsYXllciB3aGVuIG5vdCBzY2FsZWQgYW5kIHNjYWxlZCBkb3du
OyBubyBsYXllciBzY2FsZWQgdXAuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRv
cDogMHB4OyBsZWZ0OiA2MDBweCI+PC9kaXY+CisKKyAgPCEtLSBBbHdheXMgaGFzIGNvbXBvc2l0
ZWQgbGF5ZXIuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0
OiAwcHgiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5o
dG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXcuaHRtbAppbmRleCBjMmY2ZTQ5MjAzMDNkMTY4ZTNhMGUxMGIzNjYwMzc4
ZTAwOWY5ZWRiLi4zMDZlMGIxNjA0ZmM2OWMxNDFhOTI1MmZlYTVjYzVkNTY5YTgyYTI0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3Np
dGlvbi1vdXQtb2Ytdmlldy5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKQEAgLTE4LDcgKzE4LDgg
QEAKICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRy
ZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5
ZXJUcmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9j
dW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLm1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zKGRvY3VtZW50KTsKICAgICAgIH0sIGZhbHNlKTsKICAgICB9CiAgIDwvc2Ny
aXB0PgpAQCAtMjYsNyArMjcsOCBAQAogCiA8Ym9keT4KICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiAx
MDAwcHgiPgotICAgIDxwcmUgaWQ9ImxheWVydHJlZSI+PC9wcmU+CisgICAgPHByZSBpZD0ibGF5
ZXJUcmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+
PC9wcmU+CiAgIDwvZGl2PgogCiAgIDwhLS0gTmVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGVsZW1l
bnRzIGdldHMgaXRzIG93biBsYXllci4gLS0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKaW5kZXggYmU0MDgwY2YxY2JhYThk
ZDFjZWIxZjlkYjEyMjVjOGYzMTExNWI4My4uMzJlZjBjZTVjYzc1OWVmYmY3YTAyMGVjNGYxYmJi
MThiZDIwZTJhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ct
c2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIChTY3JvbGxpbmcgbm9kZQog
ICAodmlld3BvcnQgcmVjdCAwIDAgODAwIDYwMCkKICAgKGNvbnRlbnRzIHNpemUgODAwIDYwMCkK
LSAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9i
amVjdHMsICkKKyAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyBy
ZXBhaW50IG9iamVjdHMpCiApCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCA5YThhZjM2YjQyZmE1ZWQ2NDc0MmNhOGQ1N2YxNzI1NTJiODdlNGQzLi5iNTM5OTViZmFh
M2I5YjU5NGU5NjZmNDllNmMzMTkxNjM3YmE5NTdiIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMjAgIFhpYW56aHUgV2FuZyAg
PHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRv
cjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQt
b2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN5bWJvbC4KKworICAgICAgICAqIFNvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTEtMTkgIEtpaG9uZyBLd29uICA8a2lo
b25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgQWRkIFBST1hJTUlUWV9FVkVOVFMgZmVh
dHVyZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175255</attachid>
            <date>2012-11-20 11:57:23 -0800</date>
            <delta_ts>2012-11-26 16:12:14 -0800</delta_ts>
            <desc>For review</desc>
            <filename>bug-102543-20121120115511.patch</filename>
            <type>text/plain</type>
            <size>30233</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlNWM0YTljMTBhN2E5
OWUxZDQwOTY5YWE3NzYwMzgzYWIwNDVmZi4uMWY4YjUxZTc3NjNiNTc1NGUxM2JmYzM4OGIzZTE4
MzYyOTljOTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTExLTIwICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBhIGZsYWcgaXNPdXRPZlZpZXdG
aXhlZFBvc2l0aW9uZWQgaW4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCB0byBpbmRpY2F0ZSBpdCdz
IGZvciBhbiBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50LgorICAgICAgICBUaGUgZmxhZyBpcyB1
c2VkIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorICAgICAgICAxKSBpbiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKCk6IHRvIGV4Y2x1ZGUg
dGhlIGVsZW1lbnRzIHRvIGF2b2lkIHNsb3cgc2Nyb2xsaW5nLgorICAgICAgICAyKSBpbiBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllcigpOiB0byBhdm9pZCBwcmUtcGFpbnRpbmcgdGhlIG91dC1vZi12
aWV3IGZpeGVkLXBvc2l0aW9uZWQgbGF5ZXJzLgorCisgICAgICAgIEJ5IHRoZSB3YXkgZml4ZWQg
dGhlIGlzc3VlIG9mIGludGVyc2VjdGlvbiBjaGVja2luZyBvZiBmaXhlZC1wb3NpdGlvbmVkIGVs
ZW1lbnRzOgorICAgICAgICAxKSBzaG91bGQgY29uc2lkZXIgdGhlIHBhZ2Ugc2NhbGU7CisgICAg
ICAgIDIpIGZpeCBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkgd2hlbiBjb250ZW50U2l6
ZSA8IHZpc2libGVDb250ZW50UmVjdC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbAorICAgICAg
ICAgICAgICBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Yt
dmlldy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnNBc1RleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KTog
Rml4ZWQgaXNzdWUgd2hlbiBjb250ZW50c1NpemUgPCB2aXNpYmxlQ29udGVudFJlY3QuCisgICAg
ICAgIChXZWJDb3JlOjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKTogRml4ZWQgaXNzdWUg
d2hlbiBjb250ZW50c1NpemUgPCB2aXNpYmxlQ29udGVudFJlY3QuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3Rz
KTogRXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cy4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dCk6IEV4dHJhY3RlZCBmcm9tIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVt
cFByb3BlcnRpZXMgZm9yIGxheW91dCB0ZXN0cy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3Jv
bGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMpOiBNb3ZlZCBjb2RlIGZvciBtYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29ucyB0byBTY3JvbGxpbmdDb29yZGluYXRvci5jcHAuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludExheWVyKTogRG9uJ3QgcGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXll
ciB3aGVuIHByZS1wYWludGluZyBvdXQtb2YtdmlldyBjb250ZW50cy4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKTogRml4ZWQg
aXNzdWUgb2YgdGVzdGluZyBpbnRlcnNlY3Rpb24gb2YgdmlzaWJsZSByZWN0LgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojppc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZCk6IEFk
ZGVkIGZsYWcgdG8gaW5kaWNhdGUgb3V0LW9mLXZpZXcgZml4ZWQgZWxlbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNldElzT3V0T2ZWaWV3Rml4ZWRQb3Np
dGlvbmVkKTogQWRkZWQgZmxhZyB0byBpbmRpY2F0ZSBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50
LgorICAgICAgICAoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjptYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkZWQgc2V0dGlu
Z3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0cy4KKwogMjAxMi0x
MS0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1
bm5lY2Vzc2FyeSBGaWx0ZXJPcGVyYXRpb25zIGhlYWRlciBmcm9tIFJlbmRlckJveE1vZGVsT2Jq
ZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggZGMxMmE5OTMwNzVkMWEyODUyZmQxODMwMTQ4NWYwYmY5YzYxZjRh
Yy4uNGM3ZGU0OGIzN2VmOGZkNTNmYjA1ZTViZmQxOTc3OWZmNGExMGM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTExLTIwICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVT
bG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQg
cG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiB3aW4v
V2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTEx
LTIwICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBD
b25zb2xpZGF0ZSBGcmFtZUxvYWRlcjo6bG9hZCgpIGludG8gb25lIGZ1bmN0aW9uIHRha2luZyBh
IEZyYW1lTG9hZFJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOTRmMTIyYmE1NThjNDBj
NjkzMjY2MmU0ZGQ0YWViZDYzM2U1NWI1Mi4uNzZmODMxNzMwOWFmZjUwZWIxZGIzZWRmNTEyMGVk
MTVhNjg2NGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc0Niw2ICs3NDYsNyBAQCBfX1pO
N1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQ
YWdlMjVzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRD
dXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplRWkKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0
b21IVE1MVG9rZW5pemVyVGltZURlbGF5RWQKK19fWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTMyc2V0TWVtb3J5Q2Fj
aGVDbGllbnRDYWxsc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlNFBhZ2UzNXJlc3VtZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzZzZXRTaG91bGRTdXBw
cmVzc1Njcm9sbGJhckFuaW1hdGlvbnNFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZWIwMDY1MTU4
YWJlMjdjOTNlMTYxMGM5OGMwZmEzMjgyYjJjYzUzYy4uZWFkMjBmOGNjMzdiMTk5NDQ5Y2M1NGVl
ZWIzNzY5NzU2NTExMWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNTUsNiArMjU1LDE3IEBA
IFN0cmluZyBQYWdlOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKQogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAorU3RyaW5nIFBhZ2U6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0
KCkKK3sKKyAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50
KCkpCisgICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKKworICAgIGlmIChTY3JvbGxp
bmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPm1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCk7CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
IHN0cnVjdCBWaWV3TW9kZUluZm8gewogICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgUGFnZTo6
Vmlld01vZGUgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNDQzYWIyNjBiMTk0YjM3NWViZWVlZmNk
YTc0YzBiNjRmYTM2YjAwYy4uNmMzOTU1MGZhZTA1YWJjYzQ0NjMyNDU2ODVjMDBmMjVkZTgwZDQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcigpOwog
CiAgICAgICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKKyAgICAgICAgU3Ry
aW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCk7CiAKICAgICAgICAgU2V0dGlu
Z3MqIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogICAgICAg
ICBQcm9ncmVzc1RyYWNrZXIqIHByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmVzcy5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGQyMWIwZTk5MjdkNDkzMWFlZWU3YzVlYTYxZjU2NTk5
ZjY4ZjZiNzMuLjcxNmNmMTdhYmU5NjcyY2I3MTA4MmJmOWZhNGJmYzE0YjZhZjQxMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKQEAgLTY1LDM3ICs2NSwzMiBAQCBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5h
dG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKSk7CiB9CiAKLXN0YXRpYyBp
bnQgZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNldChpbnQgc2Nyb2xsUG9zaXRpb24sIGludCBtYXhW
YWx1ZSwgaW50IHNjcm9sbE9yaWdpbiwgZmxvYXQgZHJhZ0ZhY3RvcikKK3N0YXRpYyBpbnQgZml4
ZWRQb3NpdGlvblNjcm9sbE9mZnNldChpbnQgdmlzaWJsZUNvbnRlbnRTaXplLCBpbnQgY29udGVu
dHNTaXplLCBpbnQgc2Nyb2xsUG9zaXRpb24sIGludCBzY3JvbGxPcmlnaW4sIGZsb2F0IGZyYW1l
U2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSkKIHsK
LSAgICBpZiAoIW1heFZhbHVlKQorICAgIGludCBtYXhWYWx1ZSA9IGNvbnRlbnRzU2l6ZSAtIHZp
c2libGVDb250ZW50U2l6ZTsKKyAgICBpZiAobWF4VmFsdWUgPD0gMCkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBpZiAoIXNjcm9sbE9yaWdpbikgewotICAgICAgICBpZiAoc2Nyb2xsUG9zaXRp
b24gPCAwKQotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSAwOwotICAgICAgICBlbHNlIGlm
IChzY3JvbGxQb3NpdGlvbiA+IG1heFZhbHVlKQorICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24g
PD0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24g
PiBtYXhWYWx1ZSkKICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gbWF4VmFsdWU7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gMCkKLSAgICAgICAgICAgIHNj
cm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24gPCAtbWF4
VmFsdWUpCisgICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+PSAwKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA8IC1tYXhWYWx1ZSkKICAgICAgICAg
ICAgIHNjcm9sbFBvc2l0aW9uID0gLW1heFZhbHVlOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4g
c2Nyb2xsUG9zaXRpb24gKiBkcmFnRmFjdG9yOworCisgICAgZmxvYXQgZHJhZ0ZhY3RvciA9IGZp
eGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUgPyAxIDogKGNvbnRlbnRzU2l6ZSAtIHZp
c2libGVDb250ZW50U2l6ZSAqIGZyYW1lU2NhbGVGYWN0b3IpIC8gbWF4VmFsdWU7CisgICAgcmV0
dXJuIHNjcm9sbFBvc2l0aW9uICogZHJhZ0ZhY3RvciAvIGZyYW1lU2NhbGVGYWN0b3I7CiB9CiAK
IEludFNpemUgc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbihjb25zdCBJbnRSZWN0JiB2aXNp
YmxlQ29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSW50UG9p
bnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luLCBmbG9hdCBm
cmFtZVNjYWxlRmFjdG9yLCBib29sIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUp
CiB7Ci0gICAgSW50U2l6ZSBtYXhPZmZzZXQoY29udGVudHNTaXplLndpZHRoKCkgLSB2aXNpYmxl
Q29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudHNTaXplLmhlaWdodCgpIC0gdmlzaWJsZUNvbnRl
bnRSZWN0LmhlaWdodCgpKTsKLSAgICAKLSAgICBGbG9hdFNpemUgZHJhZ0ZhY3RvciA9IGZpeGVk
RWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUgPyBGbG9hdFNpemUoMSwgMSkgOiBGbG9hdFNp
emUoCi0gICAgICAgIChjb250ZW50c1NpemUud2lkdGgoKSAtIHZpc2libGVDb250ZW50UmVjdC53
aWR0aCgpICogZnJhbWVTY2FsZUZhY3RvcikgLyBtYXhPZmZzZXQud2lkdGgoKSwKLSAgICAgICAg
KGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSAqIGZy
YW1lU2NhbGVGYWN0b3IpIC8gbWF4T2Zmc2V0LmhlaWdodCgpKTsKLQotICAgIGludCB4ID0gZml4
ZWRQb3NpdGlvblNjcm9sbE9mZnNldChzY3JvbGxQb3NpdGlvbi54KCksIG1heE9mZnNldC53aWR0
aCgpLCBzY3JvbGxPcmlnaW4ueCgpLCBkcmFnRmFjdG9yLndpZHRoKCkgLyBmcmFtZVNjYWxlRmFj
dG9yKTsKLSAgICBpbnQgeSA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQoc2Nyb2xsUG9zaXRp
b24ueSgpLCBtYXhPZmZzZXQuaGVpZ2h0KCksIHNjcm9sbE9yaWdpbi55KCksIGRyYWdGYWN0b3Iu
aGVpZ2h0KCkgLyBmcmFtZVNjYWxlRmFjdG9yKTsKLQorICAgIGludCB4ID0gZml4ZWRQb3NpdGlv
blNjcm9sbE9mZnNldCh2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudHNTaXplLndp
ZHRoKCksIHNjcm9sbFBvc2l0aW9uLngoKSwgc2Nyb2xsT3JpZ2luLngoKSwgZnJhbWVTY2FsZUZh
Y3RvciwgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSk7CisgICAgaW50IHkgPSBm
aXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSwgY29u
dGVudHNTaXplLmhlaWdodCgpLCBzY3JvbGxQb3NpdGlvbi55KCksIHNjcm9sbE9yaWdpbi55KCks
IGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpOwog
ICAgIHJldHVybiBJbnRTaXplKHgsIHkpOwogfQogCkBAIC0zNDIsNyArMzM3LDcgQEAgYm9vbCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKEZy
YW1lVmlldyogZnJhbWVWaWUKICAgICAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
LT5pc0JveE1vZGVsT2JqZWN0KCkgfHwgIXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xh
eWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3Bv
cnRDb25zdHJhaW5lZEJveE1vZGVsT2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAg
IGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVsT2JqZWN0LT5pc091dE9mVmlld0ZpeGVk
UG9zaXRpb25lZCgpICYmICF2aWV3cG9ydENvbnN0cmFpbmVkQm94TW9kZWxPYmplY3QtPmxheWVy
KCktPmJhY2tpbmcoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zOTYsNCArMzkxLDI5IEBAIFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgcmVhc29ucykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIpOworICAgIGlmIChyZWFzb25zICYgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIik7CisgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5n
IGZpeGVkIGxheWVycywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50LCAiKTsKKworICAgIGlmIChzdHJpbmdCdWlsZGVy
Lmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLnJlc2l6ZShzdHJpbmdCdWlsZGVyLmxl
bmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKK30KKwor
U3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0Fz
VGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNU
ZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4NjUwZWFiNDAyNWRlM2RiZDkyNmQwYzZmOTg1MjM1
MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5NWNlZjc4OWE4YjRlOGU0ODBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgK
QEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXND
b250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGlj
c0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKTsKKyAgICBTdHJpbmcg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsKKwogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1MzNhZTZhZmUzNTk0NzM5YjZlODZkN2M1NThkMzMy
My4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4NWRlMzYzYWE2ODgzNjRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTggKzIyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkg
Y29uCiAKICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgdHMg
PDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIjsKLSAgICAgICAgaWYgKG1f
c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgICAgICB0cyA8PCAiRm9yY2Vk
IG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBh
aW50T2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMs
ICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQotICAgICAgICAgICAgdHMgPDwgIkhhcyB2
aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXll
cnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMp
Ci0gICAgICAgICAgICB0cyA8PCAiSGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiOwotICAg
ICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKLSAgICAgICAgICAgIHRzIDw8
ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAgICAgIHRzIDw8ICIpXG4iOworICAgICAgICB0cyA8
PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiIDw8IFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtX3Nob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIDw8ICIpXG4iOwogICAgIH0KIAogICAgIGlm
IChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IEludFBvaW50KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDU1NmQwZTg2ZWZkZDdmNWEyNTlkMmFm
YWVhMzRiZGEwN2M2Zjg3ZWIuLjY1MzJmNGI0NjU3Yjc0NWIyZTM2ODBlZWJkNzU1YTExODkwM2Zk
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzEwNCw2
ICszMTA0LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5
ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0lu
Zm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICAvLyBEb24ndCBwYWludCBvdXQtb2YtdmlldyBmaXhlZC1wb3NpdGlv
bmVkIGxheWVyIHdoZW4gcHJlLXBhaW50aW5nIG91dC1vZi12aWV3IGNvbnRlbnRzLgorICAgIGlm
IChtX3JlbmRlcmVyLT5pc091dE9mVmlld0ZpeGVkUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgLy8gVGhlIHVwZGF0aW5n
Q29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5
ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNo
ZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4gdGhpcyBjYXNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCA4NzBiZjFkZGZhNzM5NTljMGVlMGEyY2MxOGU5ZWZhODg1OWNmMjFjLi4wZTdkYWY5
ZDcyYjk0YzQwMGY5NjZmZThmNmJlMmIzMGQ5MWFhZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTk2MSw5ICsxOTYx
LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
UG9zaXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAKICAgICAvLyBGaXhlZCBwb3NpdGlvbiBl
bGVtZW50cyB0aGF0IGFyZSBpbnZpc2libGUgaW4gdGhlIGN1cnJlbnQgdmlldyBkb24ndCBnZXQg
dGhlaXIgb3duIGxheWVyLgogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVy
Vmlldy0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgSW50UmVjdCB2aWV3Qm91bmRzID0gSW50UmVj
dChJbnRQb2ludChmcmFtZVZpZXctPnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSksIGZy
YW1lVmlldy0+bGF5b3V0U2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBsYXllckJvdW5kcyA9IGNh
bGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIsIHJvb3RSZW5kZXJMYXllcigpKTsKLSAgICAg
ICAgaWYgKCF2aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJCb3VuZHMpKQorICAgICAgICBGbG9h
dFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGxheWVyLCByb290
UmVuZGVyTGF5ZXIoKSk7CisgICAgICAgIGxheWVyQm91bmRzLnNjYWxlKHBhZ2VTY2FsZUZhY3Rv
cigpKTsKKyAgICAgICAgYm9vbCBpc091dE9mVmlldyA9ICFmcmFtZVZpZXctPnZpc2libGVDb250
ZW50UmVjdCgpLmludGVyc2VjdHMoZW5jbG9zaW5nSW50UmVjdChsYXllckJvdW5kcykpOworICAg
ICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+c2V0SXNPdXRPZlZpZXdGaXhl
ZFBvc2l0aW9uZWQoaXNPdXRPZlZpZXcpOworICAgICAgICBpZiAoaXNPdXRPZlZpZXcpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggYWViMzJiN2EyZTNmZDVj
MDA5ODEzMDJiMGQ3MzYyYjNmNjY2M2U3MS4uMTkxNDc3MjI3MjM2M2EwYjUxZDZjYzQ4YzgxNTYy
ZWFhNmM3NDhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcApAQCAtNDAsNiArNDAsOSBAQCBib29sIFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBmYWxzZTsKIFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoTm9kZSogbm9kZSkKICAgICA6IFJlbmRl
ck9iamVjdChub2RlKQogICAgICwgbV9sYXllcigwKQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICAsIG1faXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQoZmFsc2UpCisjZW5k
aWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmgKaW5kZXggYzYyNDFkMzc3NTEzOTUzNWY5MGZjNjA1NmE0NDQyNGU5YWQzODUx
ZS4uN2MyNzM2Nzc4ZTFjZWVmZjAwYjE4MzhmYWU2MTdjYzE4MTBmMzdkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCkBAIC00Niw2
ICs0NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNv
bnN0ID0gMDsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBib29sIGlz
T3V0T2ZWaWV3Rml4ZWRQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc091dE9mVmlld0Zp
eGVkUG9zaXRpb25lZDsgfQorICAgIHZvaWQgc2V0SXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQo
Ym9vbCBmbGFnKSB7IG1faXNPdXRPZlZpZXdGaXhlZFBvc2l0aW9uZWQgPSBmbGFnOyB9CisjZW5k
aWYKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZW5zdXJlTGF5ZXIoKTsKIApAQCAtNTYsNiArNjEs
MTAgQEAgcHJpdmF0ZToKIAogICAgIFJlbmRlckxheWVyKiBtX2xheWVyOwogCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGJvb2wgbV9pc091dE9mVmlld0ZpeGVkUG9zaXRp
b25lZCA6IDE7CisjZW5kaWYKKwogICAgIC8vIFVzZWQgdG8gc3RvcmUgc3RhdGUgYmV0d2VlbiBz
dHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCiAgICAgc3RhdGljIGJvb2wgc193YXNG
bG9hdGluZzsKICAgICBzdGF0aWMgYm9vbCBzX2hhZExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGVhNzk0Yjc3Mjk4MjM0Y2MxNjczMDc4ZTNkMWZiZjllNDg0ZWVh
ZGQuLmVmNTNiZTA2NTcxZDk4NjdkNjUxMDI4ZWM1MmQ2ZmY4ZmU2YTFmNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEzOTYsNiArMTM5NiwyMCBAQCBTdHJpbmcgSW50
ZXJuYWxzOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNl
cHRpb25Db2RlJiBlYwogICAgIHJldHVybiBwYWdlLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQo
KTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9j
dW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworCisgICAgcmV0dXJuIHBhZ2UtPm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNU
ZXh0KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAg
aWYgKCFkb2N1bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNjhlNjVl
NGNiOWQxNDFiMWQzYThjZjYxOGM0YTg5ZDAwZTUwNTNiNS4uODg3ODZmMjVmYWU2NzlkN2RiMmZh
OWZlNWY4NGJmM2UxYmIyZTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0y
MDgsNiArMjA4LDggQEAgcHVibGljOgogICAgIFN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoRG9j
dW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAorICAgIFN0cmlu
ZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKKwogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1bWVu
dCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgYWxsb3dSb3VuZGluZ0hhY2tz
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNzAzYmVhM2Fh
YWFkMTdiNzBiMThkOTk5MjM3ZTU2M2Q1NDgyZTg0Zi4uMmY1YzczNWIzMmZiN2UxZjViOTIyZDAx
NzA4ZTRkNTc0ZDE4Y2ZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
MTY1LDYgKzE2NSw3IEBACiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVu
dCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChp
biBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIERPTVN0cmlu
ZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChpbiBE
b2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYKaW5kZXggODQxNmI5MTAxOWE5NzY5NjJjZjlmZmMwMzhkNmY4OGM1MjdjZTAxNS4uODA1
ODNiNTcyMDdmMTE1Y2M0MmEyNWMxMDA1Zjg3MmYzMzBmZDc3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZgpAQCAtMjAxLDYgKzIwMSw3IEBAIEVYUE9SVFMKICAgICAgICAgP2pzQXJyYXlAV2ViQ29y
ZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RA
MUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAgICAgICAg
ID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29y
ZUBAUUJFX05YWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJA
V2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBX
VEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJp
bmdAV1RGQEBYWgogICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVm
CmluZGV4IDAwM2ZjOGI2ZDI0ZTdhZTQxNGM0N2UyZTVhNzNmYWM5MGU3ZGU1N2MuLjA4ZWQxYWMw
ZGNmMGIxMmE4YTc1OTFkMDYyMTJmOGQyYjdiNTMxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYKQEAgLTE5NCw2ICsxOTQsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc0FycmF5
QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFs
T2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgog
ICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVA
QCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAg
ICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFF
P0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENoaWxkQENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmlu
ZGV4IGMxODc0NWM0NjI5YmU5YjY3YTg5MzdiMWY5MjExZGVhMmUwNzJhOTUuLjM3NTE4MjcxYjI1
MWQ4ODFlNDZmYjlkMGIyNTcxYTEyNjkzOTUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpA
QCAtMzEsNiArMzEsNyBAQCBfWk43V2ViQ29yZTRQYWdlMTNzZXRQYWdpbmF0aW9uRVJLTlNfMTBQ
YWdpbmF0aW9uRTsKIF9aTjdXZWJDb3JlNFBhZ2UxOHNldFBhZ2VTY2FsZUZhY3RvckVmUktOU184
SW50UG9pbnRFOwogX1pON1dlYkNvcmU0UGFnZTIwc2V0RGV2aWNlU2NhbGVGYWN0b3JFZjsKIF9a
TjdXZWJDb3JlNFBhZ2UyNHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEV2OworX1pON1dlYkNvcmU0
UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRFdjsKIF9aTjdXZWJDb3JlNFBh
Z2UxNnNldENhblN0YXJ0TWVkaWFFYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0
ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBDbGllbnRSZWN0RTsKIF9aTjdXZWJDb3Jl
NHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFk
b3dSb290RTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA1MDY2YzIyODNkYjZlZmNhMTQwYzY3MmMwNzgyNmRkYmE1NzEwZWMy
Li40OWJiYzU4MDQ5ZjBhNGYxMDA3Njc4ODM2MTc5ZmJmZWYyNTU4MDRkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMTEtMjAgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBh
aW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlv
biBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQvbW9kaWZpZWQgdGVzdCB0byBlbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRy
aWdnZXJlZCBieSBvdXQtb2YtdmlldyBmaXhlZC1wb3NpdGlvbmVkIGVsZW1lbnRzLAorICAgICAg
ICBhbmQgZW5zdXJlIG91dC1vZi12aWV3IGNoZWNraW5nIGlzIGNvcnJlY3Qgd2hlbiBwYWdlIGlz
IHNjYWxlZC4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBv
c2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNj
YWxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9m
aXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMg
bm90IHRyaWdnZXJlZC4gRXhwZWN0YXRpb24gaXMgdW5jaGFuZ2VkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVj
dGVkLnR4dDogVXBkYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZSBvZiBtYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29ucy4KKwogMjAxMi0xMS0yMCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBYU1NBdWRpdG9yOjpkZWNvZGVkU25pcHBldEZvckphdmFTY3JpcHQg
c3RvcHBpbmcgd2hlbiBjb21tYSBlbmNvdW50ZXJlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNj
YWxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1Mzc2NjU0ODI5ZGNiYmNkOWRmOGQyYmUyYjJjMDE2MTA2M2U2MWIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3Np
dGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjMgQEAKK05v
dCBzY2FsZWQ6CisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAo
Y2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAxMDE2
LjAwKQorICAgICAgKGNoaWxkcmVuIDIKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAg
ICAocG9zaXRpb24gNjAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkK
KyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAu
MDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTAuNToK
KyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNDAwLjAwIDUwOC4wMCkKKyAgKGNoaWxkcmVuIDEK
KyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91
bmRzIDgwMC4wMCAxMDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBbMC41MCAwLjAwIDAuMDAgMC4w
MF0gWzAuMDAgMC41MCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAw
IDAuMDAgMS4wMF0pCisgICAgICAoY2hpbGRyZW4gNAorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDEwMDguMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4w
MCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChw
b3NpdGlvbiAxMDAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAg
ICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA2MDAu
MDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAg
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAg
ICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorU2NhbGU9MS41OgorKEdyYXBoaWNzTGF5ZXIK
KyAgKGJvdW5kcyAxMjcyLjAwIDE1MjQuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgIChhbmNob3IgMC4wMCAwLjAwKQorICAgICAgKGJvdW5kcyA4NDguMDAgMTAx
Ni4wMCkKKyAgICAgICh0cmFuc2Zvcm0gWzEuNTAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuNTAg
MC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQor
ICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91
bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBv
c2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDRiZjE3NDI5MTk0MWYzYjQ4MzYwNDgwZTUzNmM0NmZhNmZlMzk2YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVk
LXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIC5maXhlZCB7CisgICAg
ICBwb3NpdGlvbjogZml4ZWQ7CisgICAgICB3aWR0aDogMTBweDsKKyAgICAgIGhlaWdodDogMTBw
eDsKKyAgICB9CisgIDwvc3R5bGU+CisKKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9u
KHRydWUpOworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEZpeGVkUG9zaXRpb25DcmVhdGVz
U3RhY2tpbmdDb250ZXh0KHRydWUpOworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGF5ZXJUcmVlIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVu
dCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29ucyIpLmlubmVyVGV4dCA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cyhkb2N1bWVudCk7CisKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZh
Y3RvcigwLjUsIDAsIDApOworCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZVNjYWxlZERvd24iKS5pbm5l
clRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRE
b3duIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRv
Y3VtZW50KTsKKworICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0
b3IoMS41LCAwLCAwKTsKKworICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlU2NhbGVkVXAiKS5pbm5l
clRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxl
ZFVwIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRv
Y3VtZW50KTsKKworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgfSwgMCk7CisgICAgICAgIH0sIDApOworICAgICAgfSwgZmFsc2UpOworICAgIH0KKyAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+
CisgICAgTm90IHNjYWxlZDoKKyAgICA8cHJlIGlkPSJsYXllclRyZWUiPjwvcHJlPgorICAgIDxw
cmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIj48L3ByZT4KKyAgICBTY2FsZT0wLjU6
CisgICAgPHByZSBpZD0ibGF5ZXJUcmVlU2NhbGVkRG93biI+PC9wcmU+CisgICAgPHByZSBpZD0i
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWREb3duIj48L3ByZT4KKyAgICBTY2FsZT0x
LjU6CisgICAgPHByZSBpZD0ibGF5ZXJUcmVlU2NhbGVkVXAiPjwvcHJlPgorICAgIDxwcmUgaWQ9
Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkVXAiPjwvcHJlPgorICA8L2Rpdj4KKwor
ICA8IS0tIE5vIGxheWVyIGluIGFueSBjYXNlLiAtLT4KKyAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0
eWxlPSJ0b3A6IC0xMDBweCI+PC9kaXY+CisKKyAgPCEtLSBIYXMgY29tcG9zaXRlZCBsYXllciB3
aGVuIHNjYWxlZCBkb3duOyBubyBsYXllciB3aGVuIG5vdCBzY2FsZWQgb3Igc2NhbGVkIHVwLiAt
LT4KKyAgPGRpdiBjbGFzcz0iZml4ZWQiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5
bGU9InRvcDogMHB4OyBsZWZ0OiAxMDAwcHgiPjwvZGl2PgorCisgIDwhLS0gSGFzIGNvbXBvc2l0
ZWQgbGF5ZXIgd2hlbiBub3Qgc2NhbGVkIGFuZCBzY2FsZWQgZG93bjsgbm8gbGF5ZXIgc2NhbGVk
IHVwLiAtLT4KKyAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogNjAw
cHgiPjwvZGl2PgorCisgIDwhLS0gQWx3YXlzIGhhcyBjb21wb3NpdGVkIGxheWVyLiAtLT4KKyAg
PGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogMHB4Ij48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbCBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0
bWwKaW5kZXggYzJmNmU0OTIwMzAzZDE2OGUzYTBlMTBiMzY2MDM3OGUwMDlmOWVkYi4uMzA2ZTBi
MTYwNGZjNjljMTQxYTkyNTJmZWE1Y2M1ZDU2OWE4MmEyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1w
b3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sCkBAIC0xOCw3ICsxOCw4IEBACiAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVydHJl
ZSIpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50
KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZSIpLmlubmVyVGV4
dCA9IHdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIikuaW5u
ZXJUZXh0ID0gd2luZG93LmludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1
bWVudCk7CiAgICAgICB9LCBmYWxzZSk7CiAgICAgfQogICA8L3NjcmlwdD4KQEAgLTI2LDcgKzI3
LDggQEAKIAogPGJvZHk+CiAgIDxkaXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4KLSAgICA8cHJl
IGlkPSJsYXllcnRyZWUiPjwvcHJlPgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+Cisg
ICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJlPgogICA8L2Rpdj4K
IAogICA8IS0tIE5laXRoZXIgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBnZXRzIGl0cyBvd24g
bGF5ZXIuIC0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3Jv
bGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4MGNmMWNiYWE4ZGQxY2ViMWY5ZGIxMjI1Yzhm
MzExMTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2EwMjBlYzRmMWJiYjE4YmQyMGUyYWMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10
cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3Rl
ZC50eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xsaW5nIG5vZGUKICAgKHZpZXdwb3J0IHJlY3Qg
MCAwIDgwMCA2MDApCiAgIChjb250ZW50cyBzaXplIDgwMCA2MDApCi0gIChTY3JvbGxpbmcgb24g
bWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCApCisgIChTY3Jv
bGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3RzKQog
KQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZTI2N2I1ZmE4ZjA2
YWVjOTViNWEyMjFjM2YyZDAwZTUwZDM4MTdkYy4uYTMzYmM2YjVjODgxNTYzYzEyYmJiZWI5OWUw
NDE0MDI4MDkwYzcyYiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTExLTIwICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93
UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9z
aXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyOgorCiAyMDEyLTExLTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgTkVXUyBhbmQgY29uZmlndXJl
LmFjIGZvciAxLjExLjIgcmVsZWFzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176104</attachid>
            <date>2012-11-26 16:12:18 -0800</date>
            <delta_ts>2012-11-27 12:13:11 -0800</delta_ts>
            <desc>avoid new field</desc>
            <filename>bug-102543-20121126160956.patch</filename>
            <type>text/plain</type>
            <size>29471</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI5NDBhMjFlNzQ4Y2I4
N2JmMDY0ODJkZDhlYTU0YmFlNTQwNWM1Yi4uYWJkZTJhOWUzZjU1OGNhMzJkNDc4OTI5NWIyOGE1
NzNkNjg4ZjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTExLTI2ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMS0yNiAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZhbGNhbnRpaUBnbWFp
bC5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdW5uZWNlc3NhcnkgZnJpZW5kIGNsYXNzZXMgaW4g
UmVuZGVyT2JqZWN0OiBMYXlvdXRSZXBhaW50ZXIsIFJlbmRlclNWR0NvbnRhaW5lcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDI3OGRiNWE5YjAwNTg3YmQ5MTNkYjRjMTlhZWRmYWZjZTUyMWVkODAuLjcwZjNiZTEw
YTIxYzQzODQ1ODliM2U4YzQxMmNhZjIzN2I3NjgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0xMS0yNiAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRG
aXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVkIHBvc2l0aW9uIGVs
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDI1NDMKKworICAgICAgICBBZGQgc3ltYm9sLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVm
OgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0xMS0yNiAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyBjbGlja3MgdGhyb3VnaCB0byB0
aGUgcmVzdGFydGVkIHBsdWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxMDBlOWE0ZDdlY2Qw
MmIyM2YyOWJhZTZkNGU1YzlkNjM2MTY2ZWNjLi4xZDA1YzViMmQ2ZjE2MTBmMGZiNzg2ODFhZGE2
OTUzNDA3OGJjOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzQ5LDYgKzc0OSw3IEBAIF9f
Wk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdgogX19aTjdXZWJDb3Jl
NFBhZ2UyNXN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzMXNl
dEN1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1
c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAorX19aTjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMzJzZXRNZW1vcnlD
YWNoZUNsaWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU0UGFnZTM1cmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzNnNldFNob3VsZFN1
cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uc0ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0NTkzODZj
NzkzNmRmZDY4Mzk2OTMwMmUwNDNjYzcwNThkYTVjNWVkLi4zYTQ2NTM5OGY5M2Y4ZDczY2Y2NzVj
ZDNiZWE2MWVkNmU2NDZkNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI1NSw2ICsyNTUsMTcg
QEAgU3RyaW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpCiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQogCitTdHJpbmcgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHQoKQoreworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+ZG9jdW1l
bnQoKSkKKyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgaWYgKFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+bWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
Kwogc3RydWN0IFZpZXdNb2RlSW5mbyB7CiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBQYWdl
OjpWaWV3TW9kZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0NDNhYjI2MGIxOTRiMzc1ZWJlZWVm
Y2RhNzRjMGI2NGZhMzZiMDBjLi42YzM5NTUwZmFlMDVhYmNjNDQ2MzI0NTY4NWMwMGYyNWRlODBk
NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTk2LDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7
CiAKICAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworICAgICAgICBT
dHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKIAogICAgICAgICBTZXR0
aW5ncyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAg
ICAgIFByb2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNz
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggY2Q5NDMyYzJhODJkOGUwMTgwMDc0N2M0YjJmZDA4
NzRlMDllYjI2Mi4uZGUxZTFlNTc4NjQyNmUzZmZmM2U2NTljOWY2MTZhYmUzMTA3NzU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcApAQCAtNjUsMzcgKzY1LDMyIEBAIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRp
bmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpKTsKIH0KIAotc3RhdGlj
IGludCBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KGludCBzY3JvbGxQb3NpdGlvbiwgaW50IG1h
eFZhbHVlLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBkcmFnRmFjdG9yKQorc3RhdGljIGludCBm
aXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KGludCB2aXNpYmxlQ29udGVudFNpemUsIGludCBjb250
ZW50c1NpemUsIGludCBzY3JvbGxQb3NpdGlvbiwgaW50IHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJh
bWVTY2FsZUZhY3RvciwgYm9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQog
ewotICAgIGlmICghbWF4VmFsdWUpCisgICAgaW50IG1heFZhbHVlID0gY29udGVudHNTaXplIC0g
dmlzaWJsZUNvbnRlbnRTaXplOworICAgIGlmIChtYXhWYWx1ZSA8PSAwKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIGlmICghc2Nyb2xsT3JpZ2luKSB7Ci0gICAgICAgIGlmIChzY3JvbGxQb3Np
dGlvbiA8IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7Ci0gICAgICAgIGVsc2Ug
aWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCisgICAgICAgIGlmIChzY3JvbGxQb3NpdGlv
biA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChzY3JvbGxQb3NpdGlv
biA+IG1heFZhbHVlKQogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBtYXhWYWx1ZTsKICAg
ICB9IGVsc2UgewotICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPiAwKQotICAgICAgICAgICAg
c2Nyb2xsUG9zaXRpb24gPSAwOwotICAgICAgICBlbHNlIGlmIChzY3JvbGxQb3NpdGlvbiA8IC1t
YXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID49IDApCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQogICAgICAg
ICAgICAgc2Nyb2xsUG9zaXRpb24gPSAtbWF4VmFsdWU7CiAgICAgfQotICAgIAotICAgIHJldHVy
biBzY3JvbGxQb3NpdGlvbiAqIGRyYWdGYWN0b3I7CisKKyAgICBmbG9hdCBkcmFnRmFjdG9yID0g
Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/IDEgOiAoY29udGVudHNTaXplIC0g
dmlzaWJsZUNvbnRlbnRTaXplICogZnJhbWVTY2FsZUZhY3RvcikgLyBtYXhWYWx1ZTsKKyAgICBy
ZXR1cm4gc2Nyb2xsUG9zaXRpb24gKiBkcmFnRmFjdG9yIC8gZnJhbWVTY2FsZUZhY3RvcjsKIH0K
IAogSW50U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKGNvbnN0IEludFJlY3QmIHZp
c2libGVDb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4sIGZsb2F0
IGZyYW1lU2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFt
ZSkKIHsKLSAgICBJbnRTaXplIG1heE9mZnNldChjb250ZW50c1NpemUud2lkdGgoKSAtIHZpc2li
bGVDb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50c1NpemUuaGVpZ2h0KCkgLSB2aXNpYmxlQ29u
dGVudFJlY3QuaGVpZ2h0KCkpOwotICAgIAotICAgIEZsb2F0U2l6ZSBkcmFnRmFjdG9yID0gZml4
ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/IEZsb2F0U2l6ZSgxLCAxKSA6IEZsb2F0
U2l6ZSgKLSAgICAgICAgKGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0
LndpZHRoKCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heE9mZnNldC53aWR0aCgpLAotICAgICAg
ICAoY29udGVudHNTaXplLmhlaWdodCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpICog
ZnJhbWVTY2FsZUZhY3RvcikgLyBtYXhPZmZzZXQuaGVpZ2h0KCkpOwotCi0gICAgaW50IHggPSBm
aXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLngoKSwgbWF4T2Zmc2V0Lndp
ZHRoKCksIHNjcm9sbE9yaWdpbi54KCksIGRyYWdGYWN0b3Iud2lkdGgoKSAvIGZyYW1lU2NhbGVG
YWN0b3IpOwotICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNldChzY3JvbGxQb3Np
dGlvbi55KCksIG1heE9mZnNldC5oZWlnaHQoKSwgc2Nyb2xsT3JpZ2luLnkoKSwgZHJhZ0ZhY3Rv
ci5oZWlnaHQoKSAvIGZyYW1lU2NhbGVGYWN0b3IpOwotCisgICAgaW50IHggPSBmaXhlZFBvc2l0
aW9uU2Nyb2xsT2Zmc2V0KHZpc2libGVDb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50c1NpemUu
d2lkdGgoKSwgc2Nyb2xsUG9zaXRpb24ueCgpLCBzY3JvbGxPcmlnaW4ueCgpLCBmcmFtZVNjYWxl
RmFjdG9yLCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKKyAgICBpbnQgeSA9
IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpLCBj
b250ZW50c1NpemUuaGVpZ2h0KCksIHNjcm9sbFBvc2l0aW9uLnkoKSwgc2Nyb2xsT3JpZ2luLnko
KSwgZnJhbWVTY2FsZUZhY3RvciwgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSk7
CiAgICAgcmV0dXJuIEludFNpemUoeCwgeSk7CiB9CiAKQEAgLTM0Myw4ICszMzgsOCBAQCBib29s
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMo
RnJhbWVWaWV3KiBmcmFtZVZpZQogICAgICAgICBSZW5kZXJPYmplY3QqIHZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QgPSAqaXQ7CiAgICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5oYXNM
YXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiB2aWV3cG9ydENvbnN0cmFpbmVkQm94TW9kZWxPYmplY3QgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOwotICAgICAgICBpZiAoIXZpZXdw
b3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdC0+bGF5ZXIoKS0+YmFja2luZygpKQorICAgICAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QpLT5sYXllcigpOworICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0
ZWQoKSAmJiAhbGF5ZXItPmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk4LDQgKzM5
MywyOSBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCit7CisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOworCisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Rm9yY2VkT25N
YWluVGhyZWFkKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiRm9yY2VkIG9uIG1haW4g
dGhyZWFkLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNT
bG93UmVwYWludE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgc2xv
dyByZXBhaW50IG9iamVjdHMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhl
ZExheWVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyB2aWV3cG9ydCBjb25z
dHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICIpOworICAg
IGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmpl
Y3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIG5vbi1sYXllciBmaXhlZCBv
YmplY3RzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0lt
YWdlRG9jdW1lbnQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJJcyBpbWFnZSBkb2N1
bWVudCwgIik7CisKKyAgICBpZiAoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSkKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5yZXNpemUoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSAtIDIpOworICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdAoreworICAgIHJl
dHVybiBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29ucygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggYzJm
MWZhODY1MGVhYjQwMjVkZTNkYmQ5MjZkMGM2Zjk4NTIzNTFmMi4uZjI1MTBjY2E1MTI3YmUwZmE4
MmM4OTVjZWY3ODlhOGI0ZThlNDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xNTAsNiArMTUwLDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlv
bkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExh
eWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpIHsgfQogCisg
ICAgc3RhdGljIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChNYWluVGhy
ZWFkU2Nyb2xsaW5nUmVhc29ucyk7CisgICAgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdD
b29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDVkMzdi
ZTJmNTMzYWU2YWZlMzU5NDczOWI2ZTg2ZDdjNTU4ZDMzMjMuLjFhZDVmYTI4YzY3MmRlMWIwNDhj
ODM5ODVkZTM2M2FhNjg4MzY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMjI3
LDE4ICsyMjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbgogCiAgICAgaWYgKG1fc2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgewogICAgICAgICB3cml0ZUlu
ZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5nIG9uIG1haW4g
dGhyZWFkIGJlY2F1c2U6ICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Rm9yY2VkT25NYWlu
VGhyZWFkKQotICAgICAgICAgICAgdHMgPDwgIkZvcmNlZCBvbiBtYWluIHRocmVhZCwgIjsKLSAg
ICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAm
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgICAg
ICB0cyA8PCAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiOwotICAgICAgICBpZiAobV9zaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhl
ZExheWVycykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgdmlld3BvcnQgY29uc3RyYWluZWQgb2Jq
ZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiOwotICAgICAgICBpZiAobV9z
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQotICAgICAgICAgICAgdHMgPDwgIkhh
cyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJ
c0ltYWdlRG9jdW1lbnQpCi0gICAgICAgICAgICB0cyA8PCAiSXMgaW1hZ2UgZG9jdW1lbnQiOwot
ICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0
aHJlYWQgYmVjYXVzZTogIiA8PCBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnNBc1RleHQobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKSA8PCAiKVxuIjsKICAgICB9CiAKICAgICBpZiAobV9yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbiAhPSBJbnRQb2ludCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCAzYzdjZjZlNTZkYzc3YjIxYjQyOTgxOTg1YzAzZDBhMGUwOTg3YTJkLi5kYTlj
NDUwNGNlNjk2MzlhMDliMDI4MGVkOWU2ZjAyZGI5NjA5M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMxMTksNiArMzExOSw5IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQog
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWlu
dEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAoaXNG
aXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1cGRhdGluZ0NvbnRyb2xUaW50cygp
IHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVycywKICAgICAgICAg
Ly8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBj
b21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMgY2FzZS4KQEAgLTQ3MzIsNiArNDcz
NSwxOSBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllcjo6bGF5ZXJGb3JTY3JvbGxDb3JuZXIo
KSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tpbmcgPyBtX2JhY2tpbmctPmxheWVyRm9yU2Ny
b2xsQ29ybmVyKCkgOiAwOwogfQorCitib29sIFJlbmRlckxheWVyOjppc0ZpeGVkUG9zaXRpb25O
b3RUb0JlUGFpbnRlZCgpIGNvbnN0Cit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9yZW5k
ZXJlci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBpZiAoIXNldHRpbmdzIHx8IHNldHRp
bmdzLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQoKSkgewor
ICAgICAgICAvLyBXaGVuIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciBmaXhlZCBwb3NpdGlv
biBpcyBlbmFibGVkLCBhbGwgZml4ZWQgcG9zaXRpb24gbGF5ZXJzIHN0YXJ0aW5nCisgICAgICAg
IC8vIGEgc3RhY2tpbmcgY29udGV4dCBzaG91bGQgYmUgY29tcG9zaXRlZCwgb3IgaXMgbm90IHRv
IGJlIHBhaW50ZWQgKGUuZy4gb3V0LW9mLXZpZXcpLgorICAgICAgICBpZiAoIWlzQ29tcG9zaXRl
ZCgpICYmIGlzU3RhY2tpbmdDb250ZXh0KCkgJiYgbV9yZW5kZXJlci0+c3R5bGUoKS0+cG9zaXRp
b24oKSA9PSBGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIGJvb2wgUmVuZGVyTGF5ZXI6OnBhaW50
c1dpdGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA2NWYxMDcwYWIyZDY2ZGYyZDk0NzE2
NTRlY2M5Y2MwZTAxN2M2MWM1Li4zOWNhNTI3MjQxMjFkZGE1OWExNmIzNjc0ZTZhZGUzMTY4ZDI0
OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjU2LDYgKzY1
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGlj
YWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9y
U2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHVzZXNDb21wb3NpdGVkU2Ny
b2xsaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb25Ob3RUb0Jl
UGFpbnRlZCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIGlzQ29tcG9zaXRlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNDb21wb3NpdGVkTWFzaygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCmluZGV4IDg3MGJmMWRkZmE3Mzk1OWMwZWUwYTJjYzE4ZTllZmE4ODU5
Y2YyMWMuLjI2Njk5MWZhYzE3OGRjNjg3MmQyZTNkNWQwOGE0ZTk0NWYwYmEzOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBA
IC0xOTYxLDkgKzE5NjEsOSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXND
b21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogCiAgICAgLy8gRml4
ZWQgcG9zaXRpb24gZWxlbWVudHMgdGhhdCBhcmUgaW52aXNpYmxlIGluIHRoZSBjdXJyZW50IHZp
ZXcgZG9uJ3QgZ2V0IHRoZWlyIG93biBsYXllci4KICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIEludFJlY3Qgdmlld0Jv
dW5kcyA9IEludFJlY3QoSW50UG9pbnQoZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBv
c2l0aW9uKCkpLCBmcmFtZVZpZXctPmxheW91dFNpemUoKSk7Ci0gICAgICAgIEludFJlY3QgbGF5
ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGxheWVyLCByb290UmVuZGVyTGF5
ZXIoKSk7Ci0gICAgICAgIGlmICghdmlld0JvdW5kcy5pbnRlcnNlY3RzKGxheWVyQm91bmRzKSkK
KyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gY2FsY3VsYXRlQ29tcG9zaXRlZEJvdW5k
cyhsYXllciwgcm9vdFJlbmRlckxheWVyKCkpOworICAgICAgICBsYXllckJvdW5kcy5zY2FsZShw
YWdlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVu
dFJlY3QoKS5pbnRlcnNlY3RzKGVuY2xvc2luZ0ludFJlY3QobGF5ZXJCb3VuZHMpKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBmYjkzMmRiMWY2YzcwZWU3MzcxZWRmZmQ0YjA3ZTM3M2ZkMTE0MmU5Li4xNTA5
NDM0NWM3ODdjMWMwOWIwMjBmODdjYWYyNzA0OWJjNGYyODFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xNDY0LDYgKzE0NjQsMjAgQEAgU3RyaW5nIEludGVybmFsczo6
c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29k
ZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiB9CiAK
K1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50KiBk
b2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCB8
fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gZG9j
dW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIHJldHVybiBwYWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpOwor
fQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1
bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghZG9j
dW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDhiMWFmYTYzY2JiODMw
MWVhY2ExZWY2NzBhOGI5Mzk4ZGRjZTZjYjMuLjRjNTY1NjNkZDMyZjZhZjM4OGNiMDY4MGRhMmRl
N2Y2M2I5MmIwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA5LDYgKzIw
OSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50Kiwg
RXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1Rl
eHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICBTdHJpbmcgbWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisK
ICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBFeGNl
cHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDgzNTJiZGVmNzY1YjM0MjY1
NmRiMTY0YzUwZDUzMmE5NzliMWI1ODIuLjliZWFjNjFlOTdkNzc5ZWY1OGE0MGRlZDAyODczNmYz
OGQyNTY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE2Niw2ICsx
NjYsNyBAQAogICAgIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1l
bnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9jdW1l
bnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBET01TdHJpbmcgbWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4gRG9jdW1lbnQg
ZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmlu
ZGV4IDg0MTZiOTEwMTlhOTc2OTYyY2Y5ZmZjMDM4ZDZmODhjNTI3Y2UwMTUuLjgwNTgzYjU3MjA3
ZjExNWNjNDJhMjVjMTAwNWY4NzJmMzMwZmQ3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAg
LTIwMSw2ICsyMDEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FW
SlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFz
c1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENo
YW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9O
WFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVA
QFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZO
b2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP21haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBA
WFoKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3Jl
QEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdl
YkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ckBXZWJDb3JlQEBRQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCAw
MDNmYzhiNmQyNGU3YWU0MTRjNDdlMmU1YTczZmFjOTBlN2RlNTdjLi4wOGVkMWFjMGRjZjBiMTJh
OGE3NTkxZDA2MjEyZjhkMmI3YjUzMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUu
ZGVmCkBAIC0xOTQsNiArMTk0LDcgQEAgRVhQT1JUUwogICAgICAgICA/anNBcnJheUBXZWJDb3Jl
QEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAg
P2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3Jl
QEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBX
ZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdU
RkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisgICAgICAgID9t
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmlu
Z0BXVEZAQFhaCiAgICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJA
V2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBjMTg3
NDVjNDYyOWJlOWI2N2E4OTM3YjFmOTIxMWRlYTJlMDcyYTk1Li4zNzUxODI3MWIyNTFkODgxZTQ2
ZmI5ZDBiMjU3MWExMjY5Mzk1M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTMxLDYg
KzMxLDcgQEAgX1pON1dlYkNvcmU0UGFnZTEzc2V0UGFnaW5hdGlvbkVSS05TXzEwUGFnaW5hdGlv
bkU7CiBfWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNfOEludFBvaW50
RTsKIF9aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWY7CiBfWk43V2ViQ29y
ZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdjsKK19aTjdXZWJDb3JlNFBhZ2UzMm1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0RXY7CiBfWk43V2ViQ29yZTRQYWdlMTZzZXRD
YW5TdGFydE1lZGlhRWI7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50UmVjdEU7CiBfWk43V2ViQ29yZTR0b0pTRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwU2hhZG93Um9vdEU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggOTEzOTEwOWJhMDZhMzQ4ZmNiNWUzNDc4YmUxOTFjNDE1Mjk4ODM2MC4uZWI0NzEw
MDYyZmQ2NzhmZWYxODJhZWE2OTdlYzgxY2M3OTRlNzQ3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTExLTI2ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVk
T2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
L21vZGlmaWVkIHRlc3QgdG8gZW5zdXJlIHNsb3ctc2Nyb2xsaW5nIGlzIG5vdCB0cmlnZ2VyZWQg
Ynkgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBlbGVtZW50cywKKyAgICAgICAgYW5kIGVu
c3VyZSBvdXQtb2YtdmlldyBjaGVja2luZyBpcyBjb3JyZWN0IHdoZW4gcGFnZSBpcyBzY2FsZWQu
CisKKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1v
dXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9z
aXRpb24tb3V0LW9mLXZpZXcuaHRtbDogRW5zdXJlIHNsb3ctc2Nyb2xsaW5nIGlzIG5vdCB0cmln
Z2VyZWQuIEV4cGVjdGF0aW9uIGlzIHVuY2hhbmdlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQ6
IFVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2YgbWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMuCisKIDIwMTItMTEtMjYgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nOiBjc3MzL2ZpbHRlcnMvY3VzdG9t
L2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jtcy1hbmltYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9m
LXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDUzNzY2NTQ4MjlkY2JiY2Q5ZGY4ZDJiZTJiMmMwMTYxMDYzZTYxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2Zp
eGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2
MyBAQAorTm90IHNjYWxlZDoKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNzg1LjAwIDEwMTYu
MDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgNzg1
LjAwIDEwMTYuMDApCisgICAgICAoY2hpbGRyZW4gMgorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAw
IDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKGJv
dW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorU2Nh
bGU9MC41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA0MDAuMDAgNTA4LjAwKQorICAoY2hp
bGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAg
ICAgIChib3VuZHMgODAwLjAwIDEwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFswLjUwIDAuMDAg
MC4wMCAwLjAwXSBbMC4wMCAwLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFsw
LjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgIChjaGlsZHJlbiA0CisgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgMTAwOC4wMCkKKyAgICAgICAgICAoYm91
bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAg
ICAgICAgKHBvc2l0aW9uIDEwMDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEw
LjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0
aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAg
ICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAw
KQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2FsZT0xLjU6CisoR3JhcGhp
Y3NMYXllcgorICAoYm91bmRzIDEyNzIuMDAgMTUyNC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRzIDg0
OC4wMCAxMDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBbMS41MCAwLjAwIDAuMDAgMC4wMF0gWzAu
MDAgMS41MCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAg
MS4wMF0pCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
ICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkK
KykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNGJmMTc0MjkxOTQxZjNiNDgzNjA0ODBlNTM2YzQ2ZmE2ZmUzOTZh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRp
b24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKQEAgLTAsMCArMSw3MCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgLmZpeGVk
IHsKKyAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgIHdpZHRoOiAxMHB4OworICAgICAgaGVp
Z2h0OiAxMHB4OworICAgIH0KKyAgPC9zdHlsZT4KKworICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVk
UG9zaXRpb24odHJ1ZSk7CisgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Rml4ZWRQb3NpdGlv
bkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICBhZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0
KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zKGRvY3VtZW50KTsKKworICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFn
ZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlU2NhbGVkRG93
biIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c1NjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VT
Y2FsZUZhY3RvcigxLjUsIDAsIDApOworCisgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWRV
cCIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSwgMCk7CisgICAgICB9LCBmYWxzZSk7CisgICAg
fQorICA8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgc3R5bGU9ImhlaWdodDog
MTAwMHB4Ij4KKyAgICBOb3Qgc2NhbGVkOgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+
CisgICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJlPgorICAgIFNj
YWxlPTAuNToKKyAgICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWREb3duIj48L3ByZT4KKyAgICA8
cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZERvd24iPjwvcHJlPgorICAg
IFNjYWxlPTEuNToKKyAgICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWRVcCI+PC9wcmU+CisgICAg
PHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRVcCI+PC9wcmU+CisgIDwv
ZGl2PgorCisgIDwhLS0gTm8gbGF5ZXIgaW4gYW55IGNhc2UuIC0tPgorICA8ZGl2IGNsYXNzPSJm
aXhlZCIgc3R5bGU9InRvcDogLTEwMHB4Ij48L2Rpdj4KKworICA8IS0tIEhhcyBjb21wb3NpdGVk
IGxheWVyIHdoZW4gc2NhbGVkIGRvd247IG5vIGxheWVyIHdoZW4gbm90IHNjYWxlZCBvciBzY2Fs
ZWQgdXAuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCI+PC9kaXY+CisgIDxkaXYgY2xhc3M9ImZp
eGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDEwMDBweCI+PC9kaXY+CisKKyAgPCEtLSBIYXMg
Y29tcG9zaXRlZCBsYXllciB3aGVuIG5vdCBzY2FsZWQgYW5kIHNjYWxlZCBkb3duOyBubyBsYXll
ciBzY2FsZWQgdXAuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBs
ZWZ0OiA2MDBweCI+PC9kaXY+CisKKyAgPCEtLSBBbHdheXMgaGFzIGNvbXBvc2l0ZWQgbGF5ZXIu
IC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0OiAwcHgiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9m
LXZpZXcuaHRtbAppbmRleCBjMmY2ZTQ5MjAzMDNkMTY4ZTNhMGUxMGIzNjYwMzc4ZTAwOWY5ZWRi
Li4zMDZlMGIxNjA0ZmM2OWMxNDFhOTI1MmZlYTVjYzVkNTY5YTgyYTI0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQt
b2Ytdmlldy5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKQEAgLTE4LDcgKzE4LDggQEAKICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQo
ZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIiku
aW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOwor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnMiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zKGRvY3VtZW50KTsKICAgICAgIH0sIGZhbHNlKTsKICAgICB9CiAgIDwvc2NyaXB0PgpAQCAt
MjYsNyArMjcsOCBAQAogCiA8Ym9keT4KICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiAxMDAwcHgiPgot
ICAgIDxwcmUgaWQ9ImxheWVydHJlZSI+PC9wcmU+CisgICAgPHByZSBpZD0ibGF5ZXJUcmVlIj48
L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+CiAg
IDwvZGl2PgogCiAgIDwhLS0gTmVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIGdldHMg
aXRzIG93biBsYXllci4gLS0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1z
bG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKaW5kZXggYmU0MDgwY2YxY2JhYThkZDFjZWIxZjlk
YjEyMjVjOGYzMTExNWI4My4uMzJlZjBjZTVjYzc1OWVmYmY3YTAyMGVjNGYxYmJiMThiZDIwZTJh
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5n
LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIChTY3JvbGxpbmcgbm9kZQogICAodmlld3Bv
cnQgcmVjdCAwIDAgODAwIDYwMCkKICAgKGNvbnRlbnRzIHNpemUgODAwIDYwMCkKLSAgKFNjcm9s
bGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICkK
KyAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9i
amVjdHMpCiApCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzZTNi
OTM2MTIxZDRkNDRiNDkzZDdiNDM4MmM5M2NlMDRmODI1NWQ3Li5mYTZhYTQ3ZThkMWI0NmEyNDc4
NWFkODNiNjhiY2Y5YjQzMDViNzg4IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMjYgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFu
emh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlz
aWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBm
aXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN5bWJvbC4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTEtMjYgIEthbGV2IExlbWJlciAgPGthbGV2bGVtYmVy
QGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBFeHBsaWNpdGx5IGxpbmsgYWdhaW5zdCBsaWJy
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176320</attachid>
            <date>2012-11-27 12:13:14 -0800</date>
            <delta_ts>2012-11-27 16:07:00 -0800</delta_ts>
            <desc>Fix layout tests</desc>
            <filename>bug-102543-20121127201051.patch</filename>
            <type>text/plain</type>
            <size>44474</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFkYWM5OWVmMTdmNzY0
YTRjODIyODNjMjI3Yzk3NWE4MDQyNjg4ZC4uMzQ3Y2E5M2IyYjIyODIyMDlkOWNlZTVjOGYzOWVm
MjBlODY2Mzg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTExLTI2ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMS0yNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGNsZWFudXAuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWVm
M2E0NDI3ZTgxNzlhOGUxOTU3Njc5ZWE5YmMyNWU3YTk3Njg3OS4uMmQxOGZiZWY3NzBjM2IwODBk
MTQ2MDAwNjNmNjRiOTQ0YTBjZmVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTExLTI2ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0
KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisg
ICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAg
ICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTExLTI3ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIFdlYlBhZ2VQcm94eTo6cmVsYXRl
ZFBhZ2VzKCkgY2Fubm90IGFzc3VtZSB0aGF0IHRoaXMgcGFnZSBpcyBrbm93biB0byBwcm9jZXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDEwMGU5YTRkN2VjZDAyYjIzZjI5YmFlNmQ0ZTVjOWQ2
MzYxNjZlY2MuLjFkMDVjNWIyZDZmMTYxMGYwZmI3ODY4MWFkYTY5NTM0MDc4YmM5ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC03NDksNiArNzQ5LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyNHNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXpl
ckNodW5rU2l6ZUVpCiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRp
bWVEZWxheUVkCitfX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNB
c1RleHRFdgogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFi
bGVkRWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTM2c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmlt
YXRpb25zRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDQ1OTM4NmM3OTM2ZGZkNjgzOTY5MzAyZTA0
M2NjNzA1OGRhNWM1ZWQuLjNhNDY1Mzk4ZjkzZjhkNzNjZjY3NWNkM2JlYTYxZWQ2ZTY0NmQ1ZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjU1LDYgKzI1NSwxNyBAQCBTdHJpbmcgUGFnZTo6c2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmlu
ZyBQYWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCit7CisgICAgaWYgKERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1
bWVudC0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAg
ICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01vZGVJ
bmZvIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCmluZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0ZmEzNmIwMGMu
LjZjMzk1NTBmYWUwNWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC0xOTYsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAgICBTdHJpbmcg
c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2Vy
KiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCBjZDk0MzJjMmE4MmQ4ZTAxODAwNzQ3YzRiMmZkMDg3NGUwOWViMjYyLi5kZTFlMWU1
Nzg2NDI2ZTNmZmYzZTY1OWM5ZjYxNmFiZTMxMDc3NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NSwz
NyArNjUsMzIgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IocGFnZSkpOwogfQogCi1zdGF0aWMgaW50IGZpeGVkUG9zaXRpb25T
Y3JvbGxPZmZzZXQoaW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgbWF4VmFsdWUsIGludCBzY3JvbGxP
cmlnaW4sIGZsb2F0IGRyYWdGYWN0b3IpCitzdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxP
ZmZzZXQoaW50IHZpc2libGVDb250ZW50U2l6ZSwgaW50IGNvbnRlbnRzU2l6ZSwgaW50IHNjcm9s
bFBvc2l0aW9uLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29s
IGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgaWYgKCFtYXhWYWx1
ZSkKKyAgICBpbnQgbWF4VmFsdWUgPSBjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemU7
CisgICAgaWYgKG1heFZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFz
Y3JvbGxPcmlnaW4pIHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgMCkKLSAgICAgICAg
ICAgIHNjcm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24g
PiBtYXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDw9IDApCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCiAgICAg
ICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IG1heFZhbHVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChzY3JvbGxQb3NpdGlvbiA+IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7
Ci0gICAgICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQorICAgICAgICBp
ZiAoc2Nyb2xsUG9zaXRpb24gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZiAoc2Nyb2xsUG9zaXRpb24gPCAtbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlv
biA9IC1tYXhWYWx1ZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICog
ZHJhZ0ZhY3RvcjsKKworICAgIGZsb2F0IGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0
UmVsYXRpdmVUb0ZyYW1lID8gMSA6IChjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemUg
KiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heFZhbHVlOworICAgIHJldHVybiBzY3JvbGxQb3NpdGlv
biAqIGRyYWdGYWN0b3IgLyBmcmFtZVNjYWxlRmFjdG9yOwogfQogCiBJbnRTaXplIHNjcm9sbE9m
ZnNldEZvckZpeGVkUG9zaXRpb24oY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3Rvciwg
Ym9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIEludFNpemUg
bWF4T2Zmc2V0KGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRo
KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7
Ci0gICAgCi0gICAgRmxvYXRTaXplIGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lID8gRmxvYXRTaXplKDEsIDEpIDogRmxvYXRTaXplKAotICAgICAgICAoY29u
dGVudHNTaXplLndpZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAqIGZyYW1lU2Nh
bGVGYWN0b3IpIC8gbWF4T2Zmc2V0LndpZHRoKCksCi0gICAgICAgIChjb250ZW50c1NpemUuaGVp
Z2h0KCkgLSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAv
IG1heE9mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxP
ZmZzZXQoc2Nyb2xsUG9zaXRpb24ueCgpLCBtYXhPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT3JpZ2lu
LngoKSwgZHJhZ0ZhY3Rvci53aWR0aCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHkg
PSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLnkoKSwgbWF4T2Zmc2V0
LmhlaWdodCgpLCBzY3JvbGxPcmlnaW4ueSgpLCBkcmFnRmFjdG9yLmhlaWdodCgpIC8gZnJhbWVT
Y2FsZUZhY3Rvcik7Ci0KKyAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlz
aWJsZUNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBzY3JvbGxQb3Np
dGlvbi54KCksIHNjcm9sbE9yaWdpbi54KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxlbWVu
dHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpOworICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9s
bE9mZnNldCh2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQo
KSwgc2Nyb2xsUG9zaXRpb24ueSgpLCBzY3JvbGxPcmlnaW4ueSgpLCBmcmFtZVNjYWxlRmFjdG9y
LCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKICAgICByZXR1cm4gSW50U2l6
ZSh4LCB5KTsKIH0KIApAQCAtMzQzLDggKzMzOCw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmll
CiAgICAgICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsK
ICAgICAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0
KCkgfHwgIXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29u
c3RyYWluZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1v
ZGVsT2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxh
eWVyKCk7CisgICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmICFsYXllci0+aXNG
aXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTgsNCArMzkzLDI5IEBAIFN0cmluZyBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgcmVh
c29ucykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAgICBpZiAocmVh
c29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIpOworICAgIGlm
IChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywg
Iik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0
aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICIpOworICAgIGlm
IChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50LCAiKTsKKworICAgIGlm
IChzdHJpbmdCdWlsZGVyLmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLnJlc2l6ZShz
dHJpbmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zQXNUZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4NjUwZWFiNDAyNWRlM2Ri
ZDkyNmQwYzZmOTg1MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5NWNlZjc4OWE4YjRlOGU0
ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5
ZXIqLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWlu
ZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
KTsKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsK
KwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1MzNhZTZhZmUzNTk0NzM5
YjZlODZkN2M1NThkMzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4NWRlMzYzYWE2ODgzNjRl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTggKzIyNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0
cywgaW50IGluZGVudCkgY29uCiAKICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAx
KTsKLSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIjsK
LSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgICAg
ICB0cyA8PCAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAgICBpZiAobV9zaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgc2xvdyBy
ZXBhaW50IG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQotICAgICAgICAg
ICAgdHMgPDwgIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9y
dGluZyBmaXhlZCBsYXllcnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5
ZXJGaXhlZE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIG5vbi1sYXllciBmaXhlZCBv
YmplY3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKLSAg
ICAgICAgICAgIHRzIDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAgICAgIHRzIDw8ICIpXG4i
OworICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiIDw8
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCht
X3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIDw8ICIpXG4iOwog
ICAgIH0KIAogICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IEludFBvaW50KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDNjN2NmNmU1
NmRjNzdiMjFiNDI5ODE5ODVjMDNkMGEwZTA5ODdhMmQuLmRhOWM0NTA0Y2U2OTYzOWEwOWIwMjgw
ZWQ5ZTZmMDJkYjk2MDkzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMzExOSw2ICszMTE5LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFN1cHBy
ZXNzUGFpbnRpbmdMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChpc0ZpeGVkUG9zaXRpb25Ob3RUb0Jl
UGFpbnRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsK
ICAgICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2Vz
IHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBl
bnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdy
b25nIHJvb3QgaW4gdGhpcyBjYXNlLgpAQCAtNDczMiw2ICs0NzM1LDE5IEBAIEdyYXBoaWNzTGF5
ZXIqIFJlbmRlckxheWVyOjpsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fYmFja2luZyA/IG1fYmFja2luZy0+bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSA6IDA7CiB9
CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkgY29u
c3QKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5z
ZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4gYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIGZpeGVkIHBvc2l0aW9uIGlzIGVuYWJsZWQsIGFsbCBm
aXhlZCBwb3NpdGlvbiBsYXllcnMgc3RhcnRpbmcKKyAgICAgICAgLy8gYSBzdGFja2luZyBjb250
ZXh0IHNob3VsZCBiZSBjb21wb3NpdGVkLCBvciBpcyBub3QgdG8gYmUgcGFpbnRlZCAoZS5nLiBv
dXQtb2YtdmlldykuCisgICAgICAgIGlmICghaXNDb21wb3NpdGVkKCkgJiYgaXNTdGFja2luZ0Nv
bnRleHQoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRp
b24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CiAjZW5kaWYKIAogYm9vbCBSZW5kZXJMYXllcjo6cGFpbnRzV2l0aFRyYW5zZm9ybShQYWlu
dEJlaGF2aW9yIHBhaW50QmVoYXZpb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCmluZGV4IDY1ZjEwNzBhYjJkNjZkZjJkOTQ3MTY1NGVjYzljYzBlMDE3YzYxYzUu
LjM5Y2E1MjcyNDEyMWRkYTU5YTE2YjM2NzRlNmFkZTMxNjhkMjQ4ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02NTYsNiArNjU2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
OwogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBPVkVS
UklERTsKKyAgICBib29sIGlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkgY29uc3Q7CiAj
ZWxzZQogICAgIGJvb2wgaXNDb21wb3NpdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGhhc0NvbXBvc2l0ZWRNYXNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggODcwYmYxZGRmYTczOTU5YzBlZTBhMmNjMThlOWVmYTg4NTljZjIxYy4uMjY2OTkxZmFjMTc4
ZGM2ODcyZDJlM2Q1ZDA4YTRlOTQ1ZjBiYTM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE5NjEsOSArMTk2MSw5IEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRp
b24oUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAKICAgICAvLyBGaXhlZCBwb3NpdGlvbiBlbGVtZW50
cyB0aGF0IGFyZSBpbnZpc2libGUgaW4gdGhlIGN1cnJlbnQgdmlldyBkb24ndCBnZXQgdGhlaXIg
b3duIGxheWVyLgogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+
ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgSW50UmVjdCB2aWV3Qm91bmRzID0gSW50UmVjdChJbnRQ
b2ludChmcmFtZVZpZXctPnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSksIGZyYW1lVmll
dy0+bGF5b3V0U2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBsYXllckJvdW5kcyA9IGNhbGN1bGF0
ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIsIHJvb3RSZW5kZXJMYXllcigpKTsKLSAgICAgICAgaWYg
KCF2aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJCb3VuZHMpKQorICAgICAgICBGbG9hdFJlY3Qg
bGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGxheWVyLCByb290UmVuZGVy
TGF5ZXIoKSk7CisgICAgICAgIGxheWVyQm91bmRzLnNjYWxlKHBhZ2VTY2FsZUZhY3RvcigpKTsK
KyAgICAgICAgaWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMo
ZW5jbG9zaW5nSW50UmVjdChsYXllckJvdW5kcykpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGZiOTMyZGIx
ZjZjNzBlZTczNzFlZGZmZDRiMDdlMzczZmQxMTQyZTkuLjE1MDk0MzQ1Yzc4N2MxYzA5YjAyMGY4
N2NhZjI3MDQ5YmM0ZjI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTE0NjQsNiArMTQ2NCwyMCBAQCBTdHJpbmcgSW50ZXJuYWxzOjpzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIHJldHVybiBw
YWdlLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUo
KSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIH0KKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIHBhZ2Ut
Pm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxz
OjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKERvY3VtZW50KiBkb2N1bWVudCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggOGIxYWZhNjNjYmI4MzAxZWFjYTFlZjY3MGE4YjkzOThk
ZGNlNmNiMy4uNGM1NjU2M2RkMzJmNmFmMzg4Y2IwNjgwZGEyZGU3ZjYzYjkyYjA1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMDksNiArMjA5LDggQEAgcHVibGljOgogICAg
IFN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKIAorICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKwogICAgIHZvaWQgZ2FyYmFnZUNv
bGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
IAogICAgIHZvaWQgYWxsb3dSb3VuZGluZ0hhY2tzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKaW5kZXggODM1MmJkZWY3NjViMzQyNjU2ZGIxNjRjNTBkNTMyYTk3OWIx
YjU4Mi4uOWJlYWM2MWU5N2Q3NzllZjU4YTQwZGVkMDI4NzM2ZjM4ZDI1NjQwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTY2LDYgKzE2Niw3IEBACiAgICAgRE9NU3Ry
aW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1
bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3Ry
aW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOworICAgIERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgRE9N
U3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggODQxNmI5MTAxOWE5NzY5
NjJjZjlmZmMwMzhkNmY4OGM1MjdjZTAxNS4uODA1ODNiNTcyMDdmMTE1Y2M0MmEyNWMxMDA1Zjg3
MmYzMzBmZDc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisr
KyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjAxLDYgKzIwMSw3IEBAIEVY
UE9SVFMKICAgICAgICAgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhl
Y1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdM
aXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFya2Vy
c0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFW
RG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNA
RG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNB
c1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/bmV4dFNp
YmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/
Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAg
ICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDAwM2ZjOGI2ZDI0ZTdhZTQxNGM0
N2UyZTVhNzNmYWM5MGU3ZGU1N2MuLjA4ZWQxYWMwZGNmMGIxMmE4YTc1OTFkMDYyMTJmOGQyYjdi
NTMxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE5NCw2ICsxOTQs
NyBAQCBFWFBPUlRTCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NA
QFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9N
U3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJF
ZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAg
P21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVj
dG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtl
clR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAg
P25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAg
ICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhY
WgogICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBR
QUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGMxODc0NWM0NjI5YmU5YjY3YTg5Mzdi
MWY5MjExZGVhMmUwNzJhOTUuLjM3NTE4MjcxYjI1MWQ4ODFlNDZmYjlkMGIyNTcxYTEyNjkzOTUz
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMzEsNiArMzEsNyBAQCBfWk43V2ViQ29y
ZTRQYWdlMTNzZXRQYWdpbmF0aW9uRVJLTlNfMTBQYWdpbmF0aW9uRTsKIF9aTjdXZWJDb3JlNFBh
Z2UxOHNldFBhZ2VTY2FsZUZhY3RvckVmUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmU0UGFn
ZTIwc2V0RGV2aWNlU2NhbGVGYWN0b3JFZjsKIF9aTjdXZWJDb3JlNFBhZ2UyNHNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dEV2OworX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNBc1RleHRFdjsKIF9aTjdXZWJDb3JlNFBhZ2UxNnNldENhblN0YXJ0TWVkaWFFYjsKIF9a
TjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TlNfMTBDbGllbnRSZWN0RTsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNf
MTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dSb290RTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YjUzYWVkMDEx
YmE3OTQzZDdhNGU5Y2JkMmRiMDJhYjk2MWQ4ZTBiLi4yZjBhNzU5NTJkN2U2YTQ0NzNkMGU4ZGIx
MzUxMzk5OWQ0NWM3YWU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMTEtMjcgIFhpYW56
aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhj
bHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQvbW9kaWZpZWQgdGVzdCB0byBl
bnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRyaWdnZXJlZCBieSBvdXQtb2YtdmlldyBmaXhl
ZC1wb3NpdGlvbmVkIGVsZW1lbnRzLAorICAgICAgICBhbmQgZW5zdXJlIG91dC1vZi12aWV3IGNo
ZWNraW5nIGlzIGNvcnJlY3Qgd2hlbiBwYWdlIGlzIHNjYWxlZC4KKworICAgICAgICBCVFcsIGZp
eGVkIHNvbWUgdGVzdHMgdGhhdCBzZXQgZW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9u
IGluIG9ubG9hZCBoYW5kbGVyIHdoaWNoIG1heSBub3QgdGFrZSBlZmZlY3QgYmVjYXVzZSBpdCBp
cyB0b28gbGF0ZS4KKyAgICAgICAgQWRkZWQgbGF5ZXIgdHJlZSBkdW1wIGZvciBzb21lIG9mIHRo
ZW0gdG8gZW5zdXJlIHRoZSBlbGVtZW50IGlzIGNvbXBvc2l0ZWQgYXMgZXhwZWN0ZWQuCisgICAg
ICAgIExlYXZlIHRoZSBpbWFnZSBtaXNtYXRjaGVzIHRvIGJ1ZyA5NjgzOS4KKworICAgICAgICAq
IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS1kb3duLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sOgorICAgICAgICAqIGNv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxl
LXNjcm9sbC5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5o
dG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFt
ZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24u
aHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFu
c2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQt
cG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWw6IEVu
c3VyZSBzbG93LXNjcm9sbGluZyBpcyBub3QgdHJpZ2dlcmVkLiBFeHBlY3RhdGlvbiBpcyB1bmNo
YW5nZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNj
cm9sbGluZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2Yg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMuCisKIDIwMTItMTEtMjcgIFlhZWwgQWhhcm9uICA8
eWFlbC5haGFyb25AaW50ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBS
ZW1vdmUgZnJvbSBUZXN0RXhwZWN0YXRpb25zIHRlc3RzIHRoYXQgYXJlIHBhc3NpbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1j
b21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93
bi1leHBlY3RlZC50eHQKaW5kZXggYWM3ZDNiOGFmMzY0NDlkMGNjOGEwZDUwYzQ4OTM0NjEyOGU0
Y2IzYy4uZTkwMGFmOTMwNWM0MmI2MjcxMjNlODMxNTFiMDcyNmY1YTkzYjc4NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9z
aXRlZC1wYWdlLXNjYWxlLWRvd24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3du
LWV4cGVjdGVkLnR4dApAQCAtMSwyICsxLDIwIEBACiBURVNUCiBURVNUCisoR3JhcGhpY3NMYXll
cgorICAoYm91bmRzIDEwMDQuMDAgMTAwOC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhp
Y3NMYXllcgorICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRzIDIwMDguMDAg
MjAxNi4wMCkKKyAgICAgICh0cmFuc2Zvcm0gWzAuNTAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDAu
NTAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBd
KQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAo
cG9zaXRpb24gMTAuMDAgMjguMDApCisgICAgICAgICAgKGJvdW5kcyAzNi4wMCAyMC4wMCkKKyAg
ICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkK
KykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1k
b3duLmh0bWwKaW5kZXggZjMzNWVmMmEzZGEzNzExNTU4OWYxZGIyYmI3MGJjZTI1NTU2ZTY5Yy4u
ZWNiOWYwM2JiNzNiOTE1NmFjMDEyMWRiNGY1NmE2MDBkODEyMjY1MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1w
YWdlLXNjYWxlLWRvd24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCkBAIC0xMywx
OCArMTMsMjIgQEAKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsK
LSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwot
ICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7
CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAw
LCAwKTsKKyAgfQorICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KHRydWUpOworCisgIGZ1bmN0aW9uIGR1bXBMYXllclRyZWUoKSB7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJUcmVl
JykuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQp
OwogICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxl
PSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgorPGJvZHkgb25sb2FkPSJkdW1wTGF5ZXJU
cmVlKCkiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0i
Zml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgt
ei1pbmRleCI+VEVTVDwvZGl2PgorPHByZSBpZD0ibGF5ZXJUcmVlIiBzdHlsZT0iY29sb3I6d2hp
dGUiPjwvcHJlPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1leHBlY3RlZC50eHQKaW5kZXggYWM3ZDNiOGFmMzY0
NDlkMGNjOGEwZDUwYzQ4OTM0NjEyOGU0Y2IzYy4uN2MxYmU0OTE5YmQ1YzRkNmM0YjY3MDk4ODBh
NzJmYzIzYzIxMzJlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUtZXhwZWN0ZWQudHh0CkBAIC0xLDIgKzEsMjAgQEAKIFRFU1QKIFRFU1QK
KyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNDAxNi4wMCA0MDMyLjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgICAgIChi
b3VuZHMgMjAwOC4wMCAyMDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBbMi4wMCAwLjAwIDAuMDAg
MC4wMF0gWzAuMDAgMi4wMCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAw
LjAwIDAuMDAgMS4wMF0pCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgIChwb3NpdGlvbiAxMC4wMCAyOC4wMCkKKyAgICAgICAgICAoYm91bmRzIDM2
LjAwIDIwLjAwKQorICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgKQorICAgICAg
KQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwtZXhwZWN0ZWQudHh0CmluZGV4IDhiZTI2NDc0
MTg2ZTNiZThhNTliNTI0YjViMWJlYWUyZDU1NTVjYmMuLmJiMTQ2OTVkZDFjMmEyOGY5ZDdjYzU0
NjE0MGViNjViOTc5Yjg3Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0xLDIgKzEs
MjAgQEAKIFRoaXMgdGVzdCBzaG91bGQgbm90IGhpdCBhbiBhc3NlcnRpb24gaW4gUmVuZGVyR2Vv
bWV0cnlNYXAgaW4gZGVidWcgYnVpbGRzCiBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBoaXQgYW4gYXNz
ZXJ0aW9uIGluIFJlbmRlckdlb21ldHJ5TWFwIGluIGRlYnVnIGJ1aWxkcworKEdyYXBoaWNzTGF5
ZXIKKyAgKGJvdW5kcyA0MDE2LjAwIDQwMzIuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBo
aWNzTGF5ZXIKKyAgICAgIChhbmNob3IgMC4wMCAwLjAwKQorICAgICAgKGJvdW5kcyAyMDA4LjAw
IDIwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFsyLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAy
LjAwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAw
XSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAg
KHBvc2l0aW9uIDg1LjAwIDExMS4wMCkKKyAgICAgICAgICAoYm91bmRzIDQ1NC4wMCAyMC4wMCkK
KyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisg
ICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4
ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLXNjcm9sbC5odG1sCmluZGV4IDAyMzcwZDdhMTBkM2JkYWYxZDhkMGNjMDg2YTA3MmJjOWUy
ZTJhZjUuLjE3MTExYmFmZTk2YWUxZmI5MGFkYjBhODA5MGFkOWMyNzdiMjc3NDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0
bWwKQEAgLTE0LDE5ICsxNCwyMyBAQAogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9u
IHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDIs
IDAsIDApOwotICAgIH0KLSAgICB3aW5kb3cuc2Nyb2xsVG8oMTAwLDEwMCk7Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFi
bGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7CisgIH0KKyAgd2luZG93LnNj
cm9sbFRvKDEwMCwxMDApOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisKKyAgZnVuY3Rpb24gZHVtcExheWVyVHJlZSgpIHsKKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllclRy
ZWUnKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVu
dCk7CiAgIH0KIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5
bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBvbmxvYWQ9ImR1bXBMYXll
clRyZWUoKSIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CiA8ZGl2IGNsYXNz
PSJmaXhlZC1uby16LWluZGV4Ij5UaGlzIHRlc3Qgc2hvdWxkIG5vdCBoaXQgYW4gYXNzZXJ0aW9u
IGluIFJlbmRlckdlb21ldHJ5TWFwIGluIGRlYnVnIGJ1aWxkczwvZGl2Pjxicj4KIDxkaXYgY2xh
c3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VGhpcyB0ZXN0IHNob3VsZCBub3QgaGl0IGFuIGFzc2Vy
dGlvbiBpbiBSZW5kZXJHZW9tZXRyeU1hcCBpbiBkZWJ1ZyBidWlsZHM8L2Rpdj4KKzxwcmUgaWQ9
ImxheWVyVHJlZSIgc3R5bGU9ImNvbG9yOndoaXRlIj48L3ByZT4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Z2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKaW5kZXgg
ZWFlN2EyOTZiYWMxZTk3N2JmYmFkYjA2OGM4M2NiYWUzYTAzMWE3My4uYmY2ZDU3ODBlZjA0ODJm
N2QzMzI0MGM3ZTUzNjgzODI5NjYzZWViYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29t
cG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTEzLDE4ICsxMywyMiBAQAogfQogPC9zdHlsZT4K
IDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5n
Rm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21w
b3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7CisgIH0KKyAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKworICBmdW5jdGlvbiBk
dW1wTGF5ZXJUcmVlKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVyVHJlZScpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5h
bHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7
Ij4KKzxib2R5IG9ubG9hZD0iZHVtcExheWVyVHJlZSgpIiBzdHlsZT0id2lkdGg6MjAwMHB4O2hl
aWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48
YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rpdj4KKzxwcmUgaWQ9
ImxheWVyVHJlZSIgc3R5bGU9ImNvbG9yOndoaXRlIj48L3ByZT4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS1kb3duLmh0bWwKaW5kZXggMmM2YTAxZWI4MDRjNzY0MWM3ZWRkMzUxZTYzODg5NmVh
OTRiYjU2Mi4uY2I5ZDQyNTE4MGM3OTlkYzBjNmM0NzQwZTQ5ZjA2ZDQ1N2QzMjE0MiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZy
YW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1z
Y2FsZS1kb3duLmh0bWwKQEAgLTEzLDE0ICsxMywxNCBAQAogfQogPC9zdHlsZT4KIDxzY3JpcHQ+
Ci0gIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBv
c2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2Nh
bGVGYWN0b3IoMC41LCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdG
b3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7CisgIH0KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAorICBmdW5jdGlvbiB0ZXN0KCkg
ewogICAgIHZhciBkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVudERv
Y3VtZW50Lm9wZW4oKTsKICAgICBkLndyaXRlKCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjpmaXhlZDsg
ei1pbmRleDogMTsgbGVmdDsgMTBweDsnPlRFU1Q8L2Rpdj4iKTsKICAgICBkLmNsb3NlKCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxl
Lmh0bWwKaW5kZXggOGUzZDM3YWFkNzJmNjk1NTQzM2Q4Mjg2OTkxOTdmNmYyNWVkZWY0ZS4uNGVl
ZjE0ODUxMmI5MzgzYTk3OTAxMzZlZmViMjAxYjFiOWIyNDk5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0
ZWQtcGFnZS1zY2FsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbApAQCAtMTMs
MTQgKzEzLDE0IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gdGVzdCgpIHsK
LSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAg
ICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KHRydWUpOworICBpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwor
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDAp
OworICB9CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQodHJ1ZSk7CiAKKyAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICB2YXIgZCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdmcmFtZScpLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7CiAgICAgZC53cml0
ZSgiPGRpdiBzdHlsZT0ncG9zaXRpb246Zml4ZWQ7IHotaW5kZXg6IDE7IGxlZnQ7IDEwcHg7Jz5U
RVNUPC9kaXY+Iik7CiAgICAgZC5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS1kb3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRl
eCAyMWQ2MDgyNTc1ZTQ5NGJiN2UyNTM3MTJhMGFiN2I4ZjA1NDg5ZGY5Li5mNzQ4ODM3NTAxYzA3
ZTE1NGM0ZmEzNDcwOTE0YjMyNDRiZTkzMzgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdl
LXNjYWxlLWRvd24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbApA
QCAtMTUsMTcgKzE1LDE1IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2Nh
bGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwot
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAw
LCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KHRydWUpOworICBpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9u
KHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9y
KDAuNSwgMCwgMCk7CiAgIH0KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJz
Y2FsZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHls
ZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXot
aW5kZXgiPlRFU1Q8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRF
U1Q8L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRt
bCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5z
Zm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAppbmRleCBiZjg4OGE2MzkwZjQyMzFiYjc1
NGM5Nzg4NzJkYzJjYmY3NmExN2Y1Li5hNTg4YzIzMmI1MDJiNmEzYzQyNGQ3YTAxM2IxZTUzNDUx
NGI5ZmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCkBAIC0xNSwxNyArMTUsMTUgQEAKIH0KIDwvc3R5bGU+
CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFs
cykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGlu
Z0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdz
LnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICBpZiAod2luZG93
LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwogICB9CisgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwv
aGVhZD4KLTxib2R5IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0
OjIwMDBweDsiPgorPGJvZHkgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CiA8
ZGl2IGNsYXNzPSJmaXhlZC1uby16LWluZGV4Ij5URVNUPC9kaXY+PGJyPgogPGRpdiBjbGFzcz0i
Zml4ZWQtd2l0aC16LWluZGV4Ij5URVNUPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Yt
dmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNTM3NjY1NDgyOWRjYmJjZDlkZjhkMmJlMmIyYzAxNjEwNjNlNjFiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYz
IEBACitOb3Qgc2NhbGVkOgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA3ODUuMDAgMTAxNi4w
MCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUu
MDAgMTAxNi4wMCkKKyAgICAgIChjaGlsZHJlbiAyCisgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgKHBvc2l0aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAg
MTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91
bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2Fs
ZT0wLjU6CisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDQwMC4wMCA1MDguMDApCisgIChjaGls
ZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChhbmNob3IgMC4wMCAwLjAwKQorICAg
ICAgKGJvdW5kcyA4MDAuMDAgMTAxNi4wMCkKKyAgICAgICh0cmFuc2Zvcm0gWzAuNTAgMC4wMCAw
LjAwIDAuMDBdIFswLjAwIDAuNTAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAu
MDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgKGNoaWxkcmVuIDQKKyAgICAgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCAxMDA4LjAwKQorICAgICAgICAgIChib3Vu
ZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAg
ICAgICAocG9zaXRpb24gMTAwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAu
MDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRp
b24gNjAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAg
KQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDAp
CisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTEuNToKKyhHcmFwaGlj
c0xheWVyCisgIChib3VuZHMgMTI3Mi4wMCAxNTI0LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChH
cmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgICAgIChib3VuZHMgODQ4
LjAwIDEwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFsxLjUwIDAuMDAgMC4wMCAwLjAwXSBbMC4w
MCAxLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAuMDAgMC4wMCAx
LjAwXSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAg
ICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQor
KQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9m
aXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ0YmYxNzQyOTE5NDFmM2I0ODM2MDQ4MGU1MzZjNDZmYTZmZTM5NmEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbApAQCAtMCwwICsxLDcwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICAuZml4ZWQg
eworICAgICAgcG9zaXRpb246IGZpeGVkOworICAgICAgd2lkdGg6IDEwcHg7CisgICAgICBoZWln
aHQ6IDEwcHg7CisgICAgfQorICA8L3N0eWxlPgorCisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQ
b3NpdGlvbih0cnVlKTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9u
Q3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgIGFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxheWVyVHJlZSIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQo
ZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRQYWdl
U2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWREb3du
IikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
U2NhbGVkRG93biIpLmlubmVyVGV4dCA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29ucyhkb2N1bWVudCk7CisKKyAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNj
YWxlRmFjdG9yKDEuNSwgMCwgMCk7CisKKyAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZVNjYWxlZFVw
IikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnNTY2FsZWRVcCIpLmlubmVyVGV4dCA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29ucyhkb2N1bWVudCk7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgIH0sIDApOworICAgICAgICB9LCAwKTsKKyAgICAgIH0sIGZhbHNlKTsKKyAgICB9
CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgPGRpdiBzdHlsZT0iaGVpZ2h0OiAx
MDAwcHgiPgorICAgIE5vdCBzY2FsZWQ6CisgICAgPHByZSBpZD0ibGF5ZXJUcmVlIj48L3ByZT4K
KyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+CisgICAgU2Nh
bGU9MC41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZERvd24iPjwvcHJlPgorICAgIDxw
cmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkRG93biI+PC9wcmU+CisgICAg
U2NhbGU9MS41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZFVwIj48L3ByZT4KKyAgICA8
cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZFVwIj48L3ByZT4KKyAgPC9k
aXY+CisKKyAgPCEtLSBObyBsYXllciBpbiBhbnkgY2FzZS4gLS0+CisgIDxkaXYgY2xhc3M9ImZp
eGVkIiBzdHlsZT0idG9wOiAtMTAwcHgiPjwvZGl2PgorCisgIDwhLS0gSGFzIGNvbXBvc2l0ZWQg
bGF5ZXIgd2hlbiBzY2FsZWQgZG93bjsgbm8gbGF5ZXIgd2hlbiBub3Qgc2NhbGVkIG9yIHNjYWxl
ZCB1cC4gLS0+CisgIDxkaXYgY2xhc3M9ImZpeGVkIj48L2Rpdj4KKyAgPGRpdiBjbGFzcz0iZml4
ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KKworICA8IS0tIEhhcyBj
b21wb3NpdGVkIGxheWVyIHdoZW4gbm90IHNjYWxlZCBhbmQgc2NhbGVkIGRvd247IG5vIGxheWVy
IHNjYWxlZCB1cC4gLS0+CisgIDxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxl
ZnQ6IDYwMHB4Ij48L2Rpdj4KKworICA8IS0tIEFsd2F5cyBoYXMgY29tcG9zaXRlZCBsYXllci4g
LS0+CisgIDxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDBweCI+PC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Yt
dmlldy5odG1sCmluZGV4IGMyZjZlNDkyMDMwM2QxNjhlM2EwZTEwYjM2NjAzNzhlMDA5ZjllZGIu
LjMwNmUwYjE2MDRmYzY5YzE0MWE5MjUyZmVhNWNjNWQ1NjlhODJhMjQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1v
Zi12aWV3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbApAQCAtMTgsNyArMTgsOCBAQAogICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
YXllcnRyZWUiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChk
b2N1bWVudCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5p
bm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cyIpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnMoZG9jdW1lbnQpOwogICAgICAgfSwgZmFsc2UpOwogICAgIH0KICAgPC9zY3JpcHQ+CkBAIC0y
Niw3ICsyNyw4IEBACiAKIDxib2R5PgogICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+Ci0g
ICAgPHByZSBpZD0ibGF5ZXJ0cmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJsYXllclRyZWUiPjwv
cHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIj48L3ByZT4KICAg
PC9kaXY+CiAKICAgPCEtLSBOZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgZ2V0cyBp
dHMgb3duIGxheWVyLiAtLT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDNiOGY0YjhkODVmNjJhOGI4MzQyYWE3MjE5NTNiNjkxZmMxNTE3
YWMuLmQ5YzMwNGNlMWM3MmRiMjlmZTlhYWIxMTFjNzQxMDQ3NjE1Njk1NDEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzYxNyw4ICsz
NjE3LDEwIEBAIGNyYnVnLmNvbS8xMzI4OTggaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS93b3JrZXJzL2Nsb3NlLmh0bWwgWyBGYWlsdXJlIFBhCiAjIFRpbWluZyBvdXQgb24gc29tZSBX
aW5kb3dzIGJvdHMKIHdlYmtpdC5vcmcvYi84OTUxMCBbIFdpbiBdIGdhbWVwYWQvZ2FtZXBhZC1w
b2xsaW5nLWFjY2Vzcy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzk2ODM5
IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVk
LXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCi13ZWJraXQub3JnL2Iv
OTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21l
dHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvOTY4MzkgY29tcG9zaXRpbmcv
Z2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hy
b21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0
d2FyZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvODk3MDIgY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvODk3MDIgcGxhdGZvcm0vY2hy
b21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVj
dXJzaW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNj
cm9sbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKaW5kZXggYmU0
MDgwY2YxY2JhYThkZDFjZWIxZjlkYjEyMjVjOGYzMTExNWI4My4uMzJlZjBjZTVjYzc1OWVmYmY3
YTAyMGVjNGYxYmJiMThiZDIwZTJhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIChTY3Jv
bGxpbmcgbm9kZQogICAodmlld3BvcnQgcmVjdCAwIDAgODAwIDYwMCkKICAgKGNvbnRlbnRzIHNp
emUgODAwIDYwMCkKLSAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xv
dyByZXBhaW50IG9iamVjdHMsICkKKyAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNl
OiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMpCiApCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCAyOGM3OTdjZGQyZmUzZDYwYTAwZThmODhjYTM0MWFjYWUwNGViZGZh
Li43ZjhiZmZkOTM3NzJkMmU3YzU5MjVmNDg5NWRiMzM0NWE1YTllZDc1IDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMjYgIFhp
YW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQg
ZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN5bWJvbC4KKworICAgICAg
ICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTEtMjYgIEhhbHRv
biBIdW8gIDxoYWx0b24uaHVvQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBDTWFrZSBzaG93
cyBFTkFCTEVfM0RfUkVOREVSSU5HIGFuZCBFTkFCTEVfV0VCR0wgaXMgc3RpbGwgT0ZGIHdoZW4g
QUMgaXMgZW5hYmxlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176355</attachid>
            <date>2012-11-27 16:07:12 -0800</date>
            <delta_ts>2012-11-28 11:44:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102543-20121128000448.patch</filename>
            <type>text/plain</type>
            <size>44559</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFkYWM5OWVmMTdmNzY0
YTRjODIyODNjMjI3Yzk3NWE4MDQyNjg4ZC4uMzQ3Y2E5M2IyYjIyODIyMDlkOWNlZTVjOGYzOWVm
MjBlODY2Mzg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTExLTI2ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMS0yNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGNsZWFudXAuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWVm
M2E0NDI3ZTgxNzlhOGUxOTU3Njc5ZWE5YmMyNWU3YTk3Njg3OS4uMmQxOGZiZWY3NzBjM2IwODBk
MTQ2MDAwNjNmNjRiOTQ0YTBjZmVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTExLTI2ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0
KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisg
ICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAg
ICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTExLTI3ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIFdlYlBhZ2VQcm94eTo6cmVsYXRl
ZFBhZ2VzKCkgY2Fubm90IGFzc3VtZSB0aGF0IHRoaXMgcGFnZSBpcyBrbm93biB0byBwcm9jZXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDEwMGU5YTRkN2VjZDAyYjIzZjI5YmFlNmQ0ZTVjOWQ2
MzYxNjZlY2MuLjFkMDVjNWIyZDZmMTYxMGYwZmI3ODY4MWFkYTY5NTM0MDc4YmM5ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC03NDksNiArNzQ5LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyNHNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXpl
ckNodW5rU2l6ZUVpCiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRp
bWVEZWxheUVkCitfX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNB
c1RleHRFdgogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFi
bGVkRWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTM2c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmlt
YXRpb25zRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDQ1OTM4NmM3OTM2ZGZkNjgzOTY5MzAyZTA0
M2NjNzA1OGRhNWM1ZWQuLjNhNDY1Mzk4ZjkzZjhkNzNjZjY3NWNkM2JlYTYxZWQ2ZTY0NmQ1ZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjU1LDYgKzI1NSwxNyBAQCBTdHJpbmcgUGFnZTo6c2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmlu
ZyBQYWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCit7CisgICAgaWYgKERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1
bWVudC0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAg
ICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01vZGVJ
bmZvIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCmluZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0ZmEzNmIwMGMu
LjZjMzk1NTBmYWUwNWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC0xOTYsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAgICBTdHJpbmcg
c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2Vy
KiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCBjZDk0MzJjMmE4MmQ4ZTAxODAwNzQ3YzRiMmZkMDg3NGUwOWViMjYyLi5kZTFlMWU1
Nzg2NDI2ZTNmZmYzZTY1OWM5ZjYxNmFiZTMxMDc3NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NSwz
NyArNjUsMzIgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IocGFnZSkpOwogfQogCi1zdGF0aWMgaW50IGZpeGVkUG9zaXRpb25T
Y3JvbGxPZmZzZXQoaW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgbWF4VmFsdWUsIGludCBzY3JvbGxP
cmlnaW4sIGZsb2F0IGRyYWdGYWN0b3IpCitzdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxP
ZmZzZXQoaW50IHZpc2libGVDb250ZW50U2l6ZSwgaW50IGNvbnRlbnRzU2l6ZSwgaW50IHNjcm9s
bFBvc2l0aW9uLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29s
IGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgaWYgKCFtYXhWYWx1
ZSkKKyAgICBpbnQgbWF4VmFsdWUgPSBjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemU7
CisgICAgaWYgKG1heFZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFz
Y3JvbGxPcmlnaW4pIHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgMCkKLSAgICAgICAg
ICAgIHNjcm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24g
PiBtYXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDw9IDApCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCiAgICAg
ICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IG1heFZhbHVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChzY3JvbGxQb3NpdGlvbiA+IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7
Ci0gICAgICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQorICAgICAgICBp
ZiAoc2Nyb2xsUG9zaXRpb24gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZiAoc2Nyb2xsUG9zaXRpb24gPCAtbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlv
biA9IC1tYXhWYWx1ZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICog
ZHJhZ0ZhY3RvcjsKKworICAgIGZsb2F0IGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0
UmVsYXRpdmVUb0ZyYW1lID8gMSA6IChjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemUg
KiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heFZhbHVlOworICAgIHJldHVybiBzY3JvbGxQb3NpdGlv
biAqIGRyYWdGYWN0b3IgLyBmcmFtZVNjYWxlRmFjdG9yOwogfQogCiBJbnRTaXplIHNjcm9sbE9m
ZnNldEZvckZpeGVkUG9zaXRpb24oY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3Rvciwg
Ym9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIEludFNpemUg
bWF4T2Zmc2V0KGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRo
KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7
Ci0gICAgCi0gICAgRmxvYXRTaXplIGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lID8gRmxvYXRTaXplKDEsIDEpIDogRmxvYXRTaXplKAotICAgICAgICAoY29u
dGVudHNTaXplLndpZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAqIGZyYW1lU2Nh
bGVGYWN0b3IpIC8gbWF4T2Zmc2V0LndpZHRoKCksCi0gICAgICAgIChjb250ZW50c1NpemUuaGVp
Z2h0KCkgLSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAv
IG1heE9mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxP
ZmZzZXQoc2Nyb2xsUG9zaXRpb24ueCgpLCBtYXhPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT3JpZ2lu
LngoKSwgZHJhZ0ZhY3Rvci53aWR0aCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHkg
PSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLnkoKSwgbWF4T2Zmc2V0
LmhlaWdodCgpLCBzY3JvbGxPcmlnaW4ueSgpLCBkcmFnRmFjdG9yLmhlaWdodCgpIC8gZnJhbWVT
Y2FsZUZhY3Rvcik7Ci0KKyAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlz
aWJsZUNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBzY3JvbGxQb3Np
dGlvbi54KCksIHNjcm9sbE9yaWdpbi54KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxlbWVu
dHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpOworICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9s
bE9mZnNldCh2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQo
KSwgc2Nyb2xsUG9zaXRpb24ueSgpLCBzY3JvbGxPcmlnaW4ueSgpLCBmcmFtZVNjYWxlRmFjdG9y
LCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKICAgICByZXR1cm4gSW50U2l6
ZSh4LCB5KTsKIH0KIApAQCAtMzQzLDggKzMzOCw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmll
CiAgICAgICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsK
ICAgICAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0
KCkgfHwgIXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29u
c3RyYWluZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1v
ZGVsT2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxh
eWVyKCk7CisgICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmICFsYXllci0+aXNG
aXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTgsNCArMzkzLDI5IEBAIFN0cmluZyBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgcmVh
c29ucykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAgICBpZiAocmVh
c29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIpOworICAgIGlm
IChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywg
Iik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0
aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICIpOworICAgIGlm
IChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50LCAiKTsKKworICAgIGlm
IChzdHJpbmdCdWlsZGVyLmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLnJlc2l6ZShz
dHJpbmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zQXNUZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4NjUwZWFiNDAyNWRlM2Ri
ZDkyNmQwYzZmOTg1MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5NWNlZjc4OWE4YjRlOGU0
ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5
ZXIqLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWlu
ZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
KTsKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsK
KwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1MzNhZTZhZmUzNTk0NzM5
YjZlODZkN2M1NThkMzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4NWRlMzYzYWE2ODgzNjRl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTggKzIyNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0
cywgaW50IGluZGVudCkgY29uCiAKICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAx
KTsKLSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIjsK
LSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgICAg
ICB0cyA8PCAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAgICBpZiAobV9zaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgc2xvdyBy
ZXBhaW50IG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQotICAgICAgICAg
ICAgdHMgPDwgIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9y
dGluZyBmaXhlZCBsYXllcnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5
ZXJGaXhlZE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIG5vbi1sYXllciBmaXhlZCBv
YmplY3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKLSAg
ICAgICAgICAgIHRzIDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAgICAgIHRzIDw8ICIpXG4i
OworICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiIDw8
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCht
X3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIDw8ICIpXG4iOwog
ICAgIH0KIAogICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IEludFBvaW50KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDNjN2NmNmU1
NmRjNzdiMjFiNDI5ODE5ODVjMDNkMGEwZTA5ODdhMmQuLmVjMjQwMWQxOTIwNjI4NzJhZDIwMTJh
OGQxOGI0OTYzNjk3ZWM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMzExOSw2ICszMTE5LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFN1cHBy
ZXNzUGFpbnRpbmdMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChpc0ZpeGVkUG9zaXRpb25Ob3RUb0Jl
UGFpbnRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsK
ICAgICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2Vz
IHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBl
bnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdy
b25nIHJvb3QgaW4gdGhpcyBjYXNlLgpAQCAtNDczMiw2ICs0NzM1LDE5IEBAIEdyYXBoaWNzTGF5
ZXIqIFJlbmRlckxheWVyOjpsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fYmFja2luZyA/IG1fYmFja2luZy0+bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSA6IDA7CiB9
CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkgY29u
c3QKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5z
ZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4gYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIGZpeGVkIHBvc2l0aW9uIGlzIGVuYWJsZWQsIGFsbCBm
aXhlZCBwb3NpdGlvbiBsYXllcnMgc3RhcnRpbmcgYSBzdGFja2luZyBjb250ZXh0CisgICAgICAg
IC8vIGFuZCBub3QgdW5kZXIgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHNob3VsZCBiZSBjb21wb3Np
dGVkLCBvciBpcyBub3QgdG8gYmUgcGFpbnRlZCAoZS5nLiBvdXQtb2YtdmlldykuCisgICAgICAg
IGlmICghaXNDb21wb3NpdGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiBtX3JlbmRlcmVy
LT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbV9yZW5kZXJlci0+Y29u
dGFpbmVyKCkgPT0gbV9yZW5kZXJlci0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIGJvb2wgUmVuZGVyTGF5
ZXI6OnBhaW50c1dpdGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA2NWYxMDcwYWIyZDY2
ZGYyZDk0NzE2NTRlY2M5Y2MwZTAxN2M2MWM1Li4zOWNhNTI3MjQxMjFkZGE1OWExNmIzNjc0ZTZh
ZGUzMTY4ZDI0OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
NjU2LDYgKzY1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVy
Rm9yVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIq
IGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHVzZXNDb21w
b3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRp
b25Ob3RUb0JlUGFpbnRlZCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIGlzQ29tcG9zaXRlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNDb21wb3NpdGVkTWFzaygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDg3MGJmMWRkZmE3Mzk1OWMwZWUwYTJjYzE4
ZTllZmE4ODU5Y2YyMWMuLjI2Njk5MWZhYzE3OGRjNjg3MmQyZTNkNWQwOGE0ZTk0NWYwYmEzOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCkBAIC0xOTYxLDkgKzE5NjEsOSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogCiAg
ICAgLy8gRml4ZWQgcG9zaXRpb24gZWxlbWVudHMgdGhhdCBhcmUgaW52aXNpYmxlIGluIHRoZSBj
dXJyZW50IHZpZXcgZG9uJ3QgZ2V0IHRoZWlyIG93biBsYXllci4KICAgICBpZiAoRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIEludFJl
Y3Qgdmlld0JvdW5kcyA9IEludFJlY3QoSW50UG9pbnQoZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRG
b3JGaXhlZFBvc2l0aW9uKCkpLCBmcmFtZVZpZXctPmxheW91dFNpemUoKSk7Ci0gICAgICAgIElu
dFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGxheWVyLCByb290
UmVuZGVyTGF5ZXIoKSk7Ci0gICAgICAgIGlmICghdmlld0JvdW5kcy5pbnRlcnNlY3RzKGxheWVy
Qm91bmRzKSkKKyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gY2FsY3VsYXRlQ29tcG9z
aXRlZEJvdW5kcyhsYXllciwgcm9vdFJlbmRlckxheWVyKCkpOworICAgICAgICBsYXllckJvdW5k
cy5zY2FsZShwYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIGlmICghZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKGVuY2xvc2luZ0ludFJlY3QobGF5ZXJCb3VuZHMp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBmYjkzMmRiMWY2YzcwZWU3MzcxZWRmZmQ0YjA3ZTM3M2ZkMTE0
MmU5Li4xNTA5NDM0NWM3ODdjMWMwOWIwMjBmODdjYWYyNzA0OWJjNGYyODFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDY0LDYgKzE0NjQsMjAgQEAgU3RyaW5nIElu
dGVybmFsczo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgRXhj
ZXB0aW9uQ29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
KCk7CiB9CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERv
Y3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIHJldHVybiBwYWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0Fz
VGV4dCgpOworfQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291
cmNlcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAg
IGlmICghZG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDhiMWFm
YTYzY2JiODMwMWVhY2ExZWY2NzBhOGI5Mzk4ZGRjZTZjYjMuLjRjNTY1NjNkZDMyZjZhZjM4OGNi
MDY4MGRhMmRlN2Y2M2I5MmIwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAt
MjA5LDYgKzIwOSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KERv
Y3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICBTdHJp
bmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CisKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1l
bnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRpbmdIYWNr
cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDgzNTJiZGVm
NzY1YjM0MjY1NmRiMTY0YzUwZDUzMmE5NzliMWI1ODIuLjliZWFjNjFlOTdkNzc5ZWY1OGE0MGRl
ZDAyODczNmYzOGQyNTY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTE2Niw2ICsxNjYsNyBAQAogICAgIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1l
bnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQo
aW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBET01TdHJp
bmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4g
RG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmCmluZGV4IDg0MTZiOTEwMTlhOTc2OTYyY2Y5ZmZjMDM4ZDZmODhjNTI3Y2UwMTUuLjgw
NTgzYjU3MjA3ZjExNWNjNDJhMjVjMTAwNWY4NzJmMzMwZmQ3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYKQEAgLTIwMSw2ICsyMDEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc0FycmF5QFdlYkNv
cmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0
QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAg
ICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNv
cmVAQFFCRV9OWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
QFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBA
V1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAg
P21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3Ry
aW5nQFdURkBAWFoKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZgppbmRleCAwMDNmYzhiNmQyNGU3YWU0MTRjNDdlMmU1YTczZmFjOTBlN2RlNTdjLi4wOGVkMWFj
MGRjZjBiMTJhOGE3NTkxZDA2MjEyZjhkMmI3YjUzMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDRkxpdGUuZGVmCkBAIC0xOTQsNiArMTk0LDcgQEAgRVhQT1JUUwogICAgICAgICA/anNBcnJh
eUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2Jh
bE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoK
ICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29u
dHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3Jl
QEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisg
ICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFB
RT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2xhc3RDaGlsZEBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpp
bmRleCBjMTg3NDVjNDYyOWJlOWI2N2E4OTM3YjFmOTIxMWRlYTJlMDcyYTk1Li4zNzUxODI3MWIy
NTFkODgxZTQ2ZmI5ZDBiMjU3MWExMjY5Mzk1M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
QEAgLTMxLDYgKzMxLDcgQEAgX1pON1dlYkNvcmU0UGFnZTEzc2V0UGFnaW5hdGlvbkVSS05TXzEw
UGFnaW5hdGlvbkU7CiBfWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNf
OEludFBvaW50RTsKIF9aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWY7CiBf
Wk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdjsKK19aTjdXZWJDb3Jl
NFBhZ2UzMm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0RXY7CiBfWk43V2ViQ29yZTRQ
YWdlMTZzZXRDYW5TdGFydE1lZGlhRWI7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3Rh
dGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50UmVjdEU7CiBfWk43V2ViQ29y
ZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwU2hh
ZG93Um9vdEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNGI1M2FlZDAxMWJhNzk0M2Q3YTRlOWNiZDJkYjAyYWI5NjFkOGUw
Yi4uMmYwYTc1OTUyZDdlNmE0NDczZDBlOGRiMTM1MTM5OTlkNDVjN2FlNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMzIEBACisyMDEyLTExLTI3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVw
YWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRp
b24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkL21vZGlmaWVkIHRlc3QgdG8gZW5zdXJlIHNsb3ctc2Nyb2xsaW5nIGlzIG5vdCB0
cmlnZ2VyZWQgYnkgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBlbGVtZW50cywKKyAgICAg
ICAgYW5kIGVuc3VyZSBvdXQtb2YtdmlldyBjaGVja2luZyBpcyBjb3JyZWN0IHdoZW4gcGFnZSBp
cyBzY2FsZWQuCisKKyAgICAgICAgQlRXLCBmaXhlZCBzb21lIHRlc3RzIHRoYXQgc2V0IGVuYWJs
ZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbiBpbiBvbmxvYWQgaGFuZGxlciB3aGljaCBtYXkg
bm90IHRha2UgZWZmZWN0IGJlY2F1c2UgaXQgaXMgdG9vIGxhdGUuCisgICAgICAgIEFkZGVkIGxh
eWVyIHRyZWUgZHVtcCBmb3Igc29tZSBvZiB0aGVtIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBpcyBj
b21wb3NpdGVkIGFzIGV4cGVjdGVkLgorICAgICAgICBMZWF2ZSB0aGUgaW1hZ2UgbWlzbWF0Y2hl
cyB0byBidWcgOTY4MzkuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1w
b3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNvbXBv
c2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3Jv
bGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBv
c2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbDoKKyAgICAgICAgKiBjb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRt
bDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUt
Y29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWw6
CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3Jt
LWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcv
Z2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5o
dG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9u
LW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1w
b3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRy
aWdnZXJlZC4gRXhwZWN0YXRpb24gaXMgdW5jaGFuZ2VkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBVcGRhdGVk
IGFjY29yZGluZyB0byB0aGUgY2hhbmdlIG9mIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zLgor
CiAyMDEyLTExLTI3ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4gUmVtb3ZlIGZyb20gVGVzdEV4cGVjdGF0aW9ucyB0
ZXN0cyB0aGF0IGFyZSBwYXNzaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24tZXhwZWN0ZWQudHh0CmluZGV4IGFjN2QzYjhh
ZjM2NDQ5ZDBjYzhhMGQ1MGM0ODkzNDYxMjhlNGNiM2MuLmU5MDBhZjkzMDVjNDJiNjI3MTIzZTgz
MTUxYjA3MjZmNWE5M2I3ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi1leHBlY3RlZC50eHQKQEAgLTEsMiArMSwyMCBA
QAogVEVTVAogVEVTVAorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyAxMDA0LjAwIDEwMDguMDAp
CisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChhbmNob3IgMC4wMCAw
LjAwKQorICAgICAgKGJvdW5kcyAyMDA4LjAwIDIwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFsw
LjUwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAwLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAw
IDAuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAg
IChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDEwLjAwIDI4LjAwKQorICAgICAg
ICAgIChib3VuZHMgMzYuMDAgMjAuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAg
ICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS1kb3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCmluZGV4IGYzMzVlZjJhM2RhMzcx
MTU1ODlmMWRiMmJiNzBiY2UyNTU1NmU2OWMuLmVjYjlmMDNiYjczYjkxNTZhYzAxMjFkYjRmNTZh
NjAwZDgxMjI2NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1w
YWdlLXNjYWxlLWRvd24uaHRtbApAQCAtMTMsMTggKzEzLDIyIEBACiB9CiA8L3N0eWxlPgogPHNj
cmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
LSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JG
aXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQ
YWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICBpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9z
aXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7CisgIH0KKyAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKworICBmdW5jdGlvbiBk
dW1wTGF5ZXJUcmVlKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVyVHJlZScpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5h
bHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7
Ij4KKzxib2R5IG9ubG9hZD0iZHVtcExheWVyVHJlZSgpIiBzdHlsZT0id2lkdGg6MjAwMHB4O2hl
aWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48
YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rpdj4KKzxwcmUgaWQ9
ImxheWVyVHJlZSIgc3R5bGU9ImNvbG9yOndoaXRlIj48L3ByZT4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZXhw
ZWN0ZWQudHh0CmluZGV4IGFjN2QzYjhhZjM2NDQ5ZDBjYzhhMGQ1MGM0ODkzNDYxMjhlNGNiM2Mu
LjdjMWJlNDkxOWJkNWM0ZDZjNGI2NzA5ODgwYTcyZmMyM2MyMTMyZTUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWV4cGVjdGVkLnR4dApA
QCAtMSwyICsxLDIwIEBACiBURVNUCiBURVNUCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDQw
MTYuMDAgNDAzMi4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
KGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRzIDIwMDguMDAgMjAxNi4wMCkKKyAgICAg
ICh0cmFuc2Zvcm0gWzIuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDIuMDAgMC4wMCAwLjAwXSBb
MC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgKGNoaWxk
cmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gMTAuMDAg
MjguMDApCisgICAgICAgICAgKGJvdW5kcyAzNi4wMCAyMC4wMCkKKyAgICAgICAgICAoZHJhd3ND
b250ZW50IDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9z
aXRlZC1wYWdlLXNjYWxlLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xs
LWV4cGVjdGVkLnR4dAppbmRleCA4YmUyNjQ3NDE4NmUzYmU4YTU5YjUyNGI1YjFiZWFlMmQ1NTU1
Y2JjLi5iYjE0Njk1ZGQxYzJhMjhmOWQ3Y2M1NDYxNDBlYjY1Yjk3OWI4N2NjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Ny
b2xsLWV4cGVjdGVkLnR4dApAQCAtMSwyICsxLDIwIEBACiBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBo
aXQgYW4gYXNzZXJ0aW9uIGluIFJlbmRlckdlb21ldHJ5TWFwIGluIGRlYnVnIGJ1aWxkcwogVGhp
cyB0ZXN0IHNob3VsZCBub3QgaGl0IGFuIGFzc2VydGlvbiBpbiBSZW5kZXJHZW9tZXRyeU1hcCBp
biBkZWJ1ZyBidWlsZHMKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNDAxNi4wMCA0MDMyLjAw
KQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAg
MC4wMCkKKyAgICAgIChib3VuZHMgMjAwOC4wMCAyMDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBb
Mi4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMi4wMCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4w
MCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAoY2hpbGRyZW4gMQorICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA4NS4wMCAxMTEuMDApCisgICAg
ICAgICAgKGJvdW5kcyA0NTQuMDAgMjAuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQor
ICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1z
Y2FsZS1zY3JvbGwuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbAppbmRleCAwMjM3MGQ3
YTEwZDNiZGFmMWQ4ZDBjYzA4NmEwNzJiYzllMmUyYWY1Li4xNzExMWJhZmU5NmFlMWZiOTBhZGIw
YTgwOTBhZDljMjc3YjI3NzQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29t
cG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sCkBAIC0xNCwxOSArMTQsMjMgQEAKIH0KIDwv
c3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93Lmlu
dGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21w
b3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9Ci0gICAgd2luZG93LnNj
cm9sbFRvKDEwMCwxMDApOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9u
KHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9y
KDIsIDAsIDApOworICB9CisgIHdpbmRvdy5zY3JvbGxUbygxMDAsMTAwKTsKKyAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgIGZ1bmN0aW9u
IGR1bXBMYXllclRyZWUoKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJUcmVlJykuaW5uZXJUZXh0ID0gd2luZG93LmludGVy
bmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOwogICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4K
LTxib2R5IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBw
eDsiPgorPGJvZHkgb25sb2FkPSJkdW1wTGF5ZXJUcmVlKCkiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7
aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VGhpcyB0ZXN0
IHNob3VsZCBub3QgaGl0IGFuIGFzc2VydGlvbiBpbiBSZW5kZXJHZW9tZXRyeU1hcCBpbiBkZWJ1
ZyBidWlsZHM8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRoaXMg
dGVzdCBzaG91bGQgbm90IGhpdCBhbiBhc3NlcnRpb24gaW4gUmVuZGVyR2VvbWV0cnlNYXAgaW4g
ZGVidWcgYnVpbGRzPC9kaXY+Cis8cHJlIGlkPSJsYXllclRyZWUiIHN0eWxlPSJjb2xvcjp3aGl0
ZSI+PC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRt
bCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGVhZTdhMjk2YmFjMWU5NzdiZmJhZGIwNjhjODNj
YmFlM2EwMzFhNzMuLmJmNmQ1NzgwZWYwNDgyZjdkMzMyNDBjN2U1MzY4MzgyOTY2M2VlYmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCkBAIC0x
MywxOCArMTMsMjIgQEAKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgp
IHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsK
LSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KHRydWUpOworICBpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUp
OworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAs
IDApOworICB9CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQodHJ1ZSk7CisKKyAgZnVuY3Rpb24gZHVtcExheWVyVHJlZSgpIHsKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllclRyZWUn
KS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7
CiAgIH0KIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9
IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBvbmxvYWQ9ImR1bXBMYXllclRy
ZWUoKSIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CiA8ZGl2IGNsYXNzPSJm
aXhlZC1uby16LWluZGV4Ij5URVNUPC9kaXY+PGJyPgogPGRpdiBjbGFzcz0iZml4ZWQtd2l0aC16
LWluZGV4Ij5URVNUPC9kaXY+Cis8cHJlIGlkPSJsYXllclRyZWUiIHN0eWxlPSJjb2xvcjp3aGl0
ZSI+PC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNj
YWxlLWRvd24uaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBv
c2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCmluZGV4IDJjNmEw
MWViODA0Yzc2NDFjN2VkZDM1MWU2Mzg4OTZlYTk0YmI1NjIuLmNiOWQ0MjUxODBjNzk5ZGMwYzZj
NDc0MGU0OWYwNmQ0NTdkMzIxNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCkBAIC0xMywxNCArMTMs
MTQgQEAKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0gICAgfQot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwor
ICB9CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
dHJ1ZSk7CiAKKyAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICB2YXIgZCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmcmFtZScpLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7CiAgICAgZC53cml0ZSgi
PGRpdiBzdHlsZT0ncG9zaXRpb246Zml4ZWQ7IHotaW5kZXg6IDE7IGxlZnQ7IDEwcHg7Jz5URVNU
PC9kaXY+Iik7CiAgICAgZC5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24t
aWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IDhlM2QzN2FhZDcyZjY5NTU0
MzNkODI4Njk5MTk3ZjZmMjVlZGVmNGUuLjRlZWYxNDg1MTJiOTM4M2E5NzkwMTM2ZWZlYjIwMWIx
YjliMjQ5OWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2Zp
eGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9z
aXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTEzLDE0ICsxMywxNCBAQAogfQogPC9zdHlsZT4KIDxz
Y3JpcHQ+Ci0gIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
LSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JG
aXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQ
YWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0
aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdz
LnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKKyAgfQorICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCisgIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUnKS5jb250ZW50
RG9jdW1lbnQub3BlbigpOwogICAgIGQud3JpdGUoIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmZpeGVk
OyB6LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVTVDwvZGl2PiIpOwogICAgIGQuY2xvc2UoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0
ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKaW5kZXggMjFkNjA4MjU3NWU0OTRiYjdlMjUzNzEyYTBh
YjdiOGYwNTQ4OWRmOS4uZjc0ODgzNzUwMWMwN2UxNTRjNGZhMzQ3MDkxNGIzMjQ0YmU5MzM4MyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKQEAgLTE1LDE3ICsxNSwxNSBAQAogfQogPC9zdHls
ZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0
aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJs
ZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwogICB9CisgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3Njcmlw
dD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7
aGVpZ2h0OjIwMDBweDsiPgorPGJvZHkgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4
OyI+CiA8ZGl2IGNsYXNzPSJmaXhlZC1uby16LWluZGV4Ij5URVNUPC9kaXY+PGJyPgogPGRpdiBj
bGFzcz0iZml4ZWQtd2l0aC16LWluZGV4Ij5URVNUPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zv
cm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0
bWwKaW5kZXggYmY4ODhhNjM5MGY0MjMxYmI3NTRjOTc4ODcyZGMyY2JmNzZhMTdmNS4uYTU4OGMy
MzJiNTAyYjZhM2M0MjRkN2EwMTNiMWU1MzQ1MTRiOWZlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0
ZWQtcGFnZS1zY2FsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbApAQCAt
MTUsMTcgKzE1LDE1IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUo
KSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7
Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAw
LCAwKTsKICAgfQorICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7
IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0
aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+
VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwvZGl2
PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1v
Zi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUzNzY2NTQ4MjlkY2JiY2Q5
ZGY4ZDJiZTJiMmMwMTYxMDYzZTYxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2MyBAQAorTm90IHNjYWxlZDoKKyhHcmFwaGljc0xh
eWVyCisgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBo
aWNzTGF5ZXIKKyAgICAgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisgICAgICAoY2hpbGRyZW4g
MgorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4w
MCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChH
cmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQor
ICAgICAgKQorICAgICkKKyAgKQorKQorU2NhbGU9MC41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJv
dW5kcyA0MDAuMDAgNTA4LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgICAgIChib3VuZHMgODAwLjAwIDEwMTYuMDApCisg
ICAgICAodHJhbnNmb3JtIFswLjUwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAwLjUwIDAuMDAgMC4w
MF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgIChj
aGlsZHJlbiA0CisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDgu
MDAgMTAwOC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisg
ICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDEwMDAuMDAgMC4wMCkK
KyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFw
aGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChi
b3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQor
ICApCispCitTY2FsZT0xLjU6CisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDEyNzIuMDAgMTUy
NC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGFuY2hvciAw
LjAwIDAuMDApCisgICAgICAoYm91bmRzIDg0OC4wMCAxMDE2LjAwKQorICAgICAgKHRyYW5zZm9y
bSBbMS41MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS41MCAwLjAwIDAuMDBdIFswLjAwIDAuMDAg
MS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAoY2hpbGRyZW4gMQorICAg
ICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAg
ICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nh
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1w
b3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGJmMTc0MjkxOTQx
ZjNiNDgzNjA0ODBlNTM2YzQ2ZmE2ZmUzOTZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXct
c2NhbGVkLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICA8c3R5bGU+CisgICAgLmZpeGVkIHsKKyAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAg
ICAgIHdpZHRoOiAxMHB4OworICAgICAgaGVpZ2h0OiAxMHB4OworICAgIH0KKyAgPC9zdHlsZT4K
KworICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7
CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCisgICAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQg
PSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIikuaW5uZXJUZXh0ID0g
aW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKworICAgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7CisKKyAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibGF5ZXJUcmVlU2NhbGVkRG93biIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXll
clRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRl
cm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigxLjUsIDAsIDApOworCisgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWRVcCIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXll
clRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRl
cm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSwg
MCk7CisgICAgICB9LCBmYWxzZSk7CisgICAgfQorICA8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJv
ZHk+CisgIDxkaXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4KKyAgICBOb3Qgc2NhbGVkOgorICAg
IDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+CisgICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnMiPjwvcHJlPgorICAgIFNjYWxlPTAuNToKKyAgICA8cHJlIGlkPSJsYXllclRy
ZWVTY2FsZWREb3duIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29uc1NjYWxlZERvd24iPjwvcHJlPgorICAgIFNjYWxlPTEuNToKKyAgICA8cHJlIGlkPSJsYXll
clRyZWVTY2FsZWRVcCI+PC9wcmU+CisgICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNTY2FsZWRVcCI+PC9wcmU+CisgIDwvZGl2PgorCisgIDwhLS0gTm8gbGF5ZXIgaW4gYW55
IGNhc2UuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogLTEwMHB4Ij48L2Rp
dj4KKworICA8IS0tIEhhcyBjb21wb3NpdGVkIGxheWVyIHdoZW4gc2NhbGVkIGRvd247IG5vIGxh
eWVyIHdoZW4gbm90IHNjYWxlZCBvciBzY2FsZWQgdXAuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhl
ZCI+PC9kaXY+CisgIDxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDEw
MDBweCI+PC9kaXY+CisKKyAgPCEtLSBIYXMgY29tcG9zaXRlZCBsYXllciB3aGVuIG5vdCBzY2Fs
ZWQgYW5kIHNjYWxlZCBkb3duOyBubyBsYXllciBzY2FsZWQgdXAuIC0tPgorICA8ZGl2IGNsYXNz
PSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0OiA2MDBweCI+PC9kaXY+CisKKyAgPCEtLSBB
bHdheXMgaGFzIGNvbXBvc2l0ZWQgbGF5ZXIuIC0tPgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5
bGU9InRvcDogMHB4OyBsZWZ0OiAwcHgiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3Np
dGlvbi1vdXQtb2Ytdmlldy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAppbmRleCBjMmY2ZTQ5MjAzMDNk
MTY4ZTNhMGUxMGIzNjYwMzc4ZTAwOWY5ZWRiLi4zMDZlMGIxNjA0ZmM2OWMxNDFhOTI1MmZlYTVj
YzVkNTY5YTgyYTI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0
bWwKQEAgLTE4LDcgKzE4LDggQEAKICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gd2luZG93
LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5s
YXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJu
YWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKICAgICAgIH0sIGZhbHNl
KTsKICAgICB9CiAgIDwvc2NyaXB0PgpAQCAtMjYsNyArMjcsOCBAQAogCiA8Ym9keT4KICAgPGRp
diBzdHlsZT0iaGVpZ2h0OiAxMDAwcHgiPgotICAgIDxwcmUgaWQ9ImxheWVydHJlZSI+PC9wcmU+
CisgICAgPHByZSBpZD0ibGF5ZXJUcmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+CiAgIDwvZGl2PgogCiAgIDwhLS0gTmVpdGhlciBvZiB0
aGUgZm9sbG93aW5nIGVsZW1lbnRzIGdldHMgaXRzIG93biBsYXllci4gLS0+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYjhmNGI4ZDg1
ZjYyYThiODM0MmFhNzIxOTUzYjY5MWZjMTUxN2FjLi5kOWMzMDRjZTFjNzJkYjI5ZmU5YWFiMTEx
Yzc0MTA0NzYxNTY5NTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTM2MTcsOCArMzYxNywxMCBAQCBjcmJ1Zy5jb20vMTMyODk4IGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sIFsgRmFpbHVy
ZSBQYQogIyBUaW1pbmcgb3V0IG9uIHNvbWUgV2luZG93cyBib3RzCiB3ZWJraXQub3JnL2IvODk1
MTAgWyBXaW4gXSBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbCBbIFBhc3MgVGlt
ZW91dCBdCiAKLXdlYmtpdC5vcmcvYi85NjgzOSBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1w
b3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIFBhc3MgXQotd2Via2l0Lm9yZy9iLzk2ODM5IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1
YWwvc29mdHdhcmVjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0t
Y29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Vi
a2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5z
Zm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzk2ODM5IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NjgzOSBjb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLWRvd24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk2ODM5IHBs
YXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg5NzAyIGNvbXBvc2l0aW5nL3NjYWxpbmcv
dGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Vi
a2l0Lm9yZy9iLzg5NzAyIHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3Np
dGluZy9zY2FsaW5nL3RpbGVkLWxheWVyLXJlY3Vyc2lvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3Jv
bGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4MGNmMWNiYWE4ZGQxY2ViMWY5ZGIxMjI1Yzhm
MzExMTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2EwMjBlYzRmMWJiYjE4YmQyMGUyYWMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10
cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3Rl
ZC50eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xsaW5nIG5vZGUKICAgKHZpZXdwb3J0IHJlY3Qg
MCAwIDgwMCA2MDApCiAgIChjb250ZW50cyBzaXplIDgwMCA2MDApCi0gIChTY3JvbGxpbmcgb24g
bWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCApCisgIChTY3Jv
bGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3RzKQog
KQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMjhjNzk3Y2RkMmZl
M2Q2MGEwMGU4Zjg4Y2EzNDFhY2FlMDRlYmRmYS4uN2Y4YmZmZDkzNzcyZDJlN2M1OTI1ZjQ4OTVk
YjMzNDVhNWE5ZWQ3NSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTExLTI2ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93
UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9z
aXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyOgorCiAyMDEyLTExLTI2ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF0gQ01ha2Ugc2hvd3MgRU5BQkxFXzNEX1JFTkRFUklORyBhbmQgRU5B
QkxFX1dFQkdMIGlzIHN0aWxsIE9GRiB3aGVuIEFDIGlzIGVuYWJsZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176534</attachid>
            <date>2012-11-28 11:44:40 -0800</date>
            <delta_ts>2012-12-03 16:00:32 -0800</delta_ts>
            <desc>Fix layout tests on Mac</desc>
            <filename>bug-102543-20121128194215.patch</filename>
            <type>text/plain</type>
            <size>40627</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBiNDg5YzIyN2Y3ZjZl
YWQwNmI4M2UyNWU4YTExN2JmY2I3MzJmNC4uODgxNTFmNGI2NDczM2Y0YTc0NzQyZDMwNTg5ZGJh
ZWNmYzcyNzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTExLTI4ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMS0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVudExvYWRlciwgc2ltcGxpZnkgRnJh
bWVMb2FkZXI6OmluaXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ2MzYzOGM1OGViNTUzYjVlZjUwODBhNmY0
MGFhZGRiNDhhZmY1MTcuLjQzNDU1ZWU3Y2JjYmFhMGYwZTU4ZWI3NTc2NTY4MDc5MmYwYzNhYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMS0yOCAgWGlhbnpodSBXYW5nICA8
d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1v
Zi12aWV3IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKworICAgICAgICBBZGQgc3ltYm9sLgorCisg
ICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZjoKKwogMjAxMi0xMS0yOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50
ZWwuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjEzNTk2Mik6IG1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzIG5lZWRzIHRvIGJlIGNsZWFyZWQgaW4gTGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdl
R0xSZXNvdXJjZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiOWIyMTlhODM0MWMyOTYxOTk4
MGZiMjc2NTc2OTI0ZjJkN2M0NTU1Li41Zjg0MWE2YmZmNzI0MzIyNmUyY2E1YWIwYWY0NDFjODQ3
OTYxNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzQ3LDYgKzc0Nyw3IEBAIF9fWk43V2Vi
Q29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdgogX19aTjdXZWJDb3JlNFBhZ2Uy
NXN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3Rv
bUhUTUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhU
TUxUb2tlbml6ZXJUaW1lRGVsYXlFZAorX19aTjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMzJzZXRNZW1vcnlDYWNoZUNs
aWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU0UGFnZTM1cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzNnNldFNob3VsZFN1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9uc0ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0NTkzODZjNzkzNmRm
ZDY4Mzk2OTMwMmUwNDNjYzcwNThkYTVjNWVkLi4zYTQ2NTM5OGY5M2Y4ZDczY2Y2NzVjZDNiZWE2
MWVkNmU2NDZkNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI1NSw2ICsyNTUsMTcgQEAgU3Ry
aW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCitTdHJpbmcgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKQor
eworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgaWYgKFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+bWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogc3Ry
dWN0IFZpZXdNb2RlSW5mbyB7CiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBQYWdlOjpWaWV3
TW9kZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0NDNhYjI2MGIxOTRiMzc1ZWJlZWVmY2RhNzRj
MGI2NGZhMzZiMDBjLi42YzM5NTUwZmFlMDVhYmNjNDQ2MzI0NTY4NWMwMGYyNWRlODBkNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaApAQCAtMTk2LDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAKICAg
ICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworICAgICAgICBTdHJpbmcg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKIAogICAgICAgICBTZXR0aW5ncyog
c2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgICAgIFBy
b2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKaW5kZXggY2Q5NDMyYzJhODJkOGUwMTgwMDc0N2M0YjJmZDA4NzRlMDll
YjI2Mi4uZGUxZTFlNTc4NjQyNmUzZmZmM2U2NTljOWY2MTZhYmUzMTA3NzU1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcApAQCAtNjUsMzcgKzY1LDMyIEBAIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpKTsKIH0KIAotc3RhdGljIGludCBm
aXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KGludCBzY3JvbGxQb3NpdGlvbiwgaW50IG1heFZhbHVl
LCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBkcmFnRmFjdG9yKQorc3RhdGljIGludCBmaXhlZFBv
c2l0aW9uU2Nyb2xsT2Zmc2V0KGludCB2aXNpYmxlQ29udGVudFNpemUsIGludCBjb250ZW50c1Np
emUsIGludCBzY3JvbGxQb3NpdGlvbiwgaW50IHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2Fs
ZUZhY3RvciwgYm9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAg
IGlmICghbWF4VmFsdWUpCisgICAgaW50IG1heFZhbHVlID0gY29udGVudHNTaXplIC0gdmlzaWJs
ZUNvbnRlbnRTaXplOworICAgIGlmIChtYXhWYWx1ZSA8PSAwKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGlmICghc2Nyb2xsT3JpZ2luKSB7Ci0gICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA8
IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHNj
cm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCisgICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA8PSAw
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+IG1h
eFZhbHVlKQogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBtYXhWYWx1ZTsKICAgICB9IGVs
c2UgewotICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPiAwKQotICAgICAgICAgICAgc2Nyb2xs
UG9zaXRpb24gPSAwOwotICAgICAgICBlbHNlIGlmIChzY3JvbGxQb3NpdGlvbiA8IC1tYXhWYWx1
ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID49IDApCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQogICAgICAgICAgICAg
c2Nyb2xsUG9zaXRpb24gPSAtbWF4VmFsdWU7CiAgICAgfQotICAgIAotICAgIHJldHVybiBzY3Jv
bGxQb3NpdGlvbiAqIGRyYWdGYWN0b3I7CisKKyAgICBmbG9hdCBkcmFnRmFjdG9yID0gZml4ZWRF
bGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/IDEgOiAoY29udGVudHNTaXplIC0gdmlzaWJs
ZUNvbnRlbnRTaXplICogZnJhbWVTY2FsZUZhY3RvcikgLyBtYXhWYWx1ZTsKKyAgICByZXR1cm4g
c2Nyb2xsUG9zaXRpb24gKiBkcmFnRmFjdG9yIC8gZnJhbWVTY2FsZUZhY3RvcjsKIH0KIAogSW50
U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKGNvbnN0IEludFJlY3QmIHZpc2libGVD
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBJbnRQb2ludCYg
c2Nyb2xsUG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4sIGZsb2F0IGZyYW1l
U2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSkKIHsK
LSAgICBJbnRTaXplIG1heE9mZnNldChjb250ZW50c1NpemUud2lkdGgoKSAtIHZpc2libGVDb250
ZW50UmVjdC53aWR0aCgpLCBjb250ZW50c1NpemUuaGVpZ2h0KCkgLSB2aXNpYmxlQ29udGVudFJl
Y3QuaGVpZ2h0KCkpOwotICAgIAotICAgIEZsb2F0U2l6ZSBkcmFnRmFjdG9yID0gZml4ZWRFbGVt
ZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/IEZsb2F0U2l6ZSgxLCAxKSA6IEZsb2F0U2l6ZSgK
LSAgICAgICAgKGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRo
KCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heE9mZnNldC53aWR0aCgpLAotICAgICAgICAoY29u
dGVudHNTaXplLmhlaWdodCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpICogZnJhbWVT
Y2FsZUZhY3RvcikgLyBtYXhPZmZzZXQuaGVpZ2h0KCkpOwotCi0gICAgaW50IHggPSBmaXhlZFBv
c2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLngoKSwgbWF4T2Zmc2V0LndpZHRoKCks
IHNjcm9sbE9yaWdpbi54KCksIGRyYWdGYWN0b3Iud2lkdGgoKSAvIGZyYW1lU2NhbGVGYWN0b3Ip
OwotICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNldChzY3JvbGxQb3NpdGlvbi55
KCksIG1heE9mZnNldC5oZWlnaHQoKSwgc2Nyb2xsT3JpZ2luLnkoKSwgZHJhZ0ZhY3Rvci5oZWln
aHQoKSAvIGZyYW1lU2NhbGVGYWN0b3IpOwotCisgICAgaW50IHggPSBmaXhlZFBvc2l0aW9uU2Ny
b2xsT2Zmc2V0KHZpc2libGVDb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50c1NpemUud2lkdGgo
KSwgc2Nyb2xsUG9zaXRpb24ueCgpLCBzY3JvbGxPcmlnaW4ueCgpLCBmcmFtZVNjYWxlRmFjdG9y
LCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKKyAgICBpbnQgeSA9IGZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpLCBjb250ZW50
c1NpemUuaGVpZ2h0KCksIHNjcm9sbFBvc2l0aW9uLnkoKSwgc2Nyb2xsT3JpZ2luLnkoKSwgZnJh
bWVTY2FsZUZhY3RvciwgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSk7CiAgICAg
cmV0dXJuIEludFNpemUoeCwgeSk7CiB9CiAKQEAgLTM0Myw4ICszMzgsOCBAQCBib29sIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVW
aWV3KiBmcmFtZVZpZQogICAgICAgICBSZW5kZXJPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3QgPSAqaXQ7CiAgICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNC
b3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiB2aWV3cG9ydENvbnN0cmFpbmVkQm94TW9kZWxPYmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOwotICAgICAgICBpZiAoIXZpZXdwb3J0Q29u
c3RyYWluZWRCb3hNb2RlbE9iamVjdC0+bGF5ZXIoKS0+YmFja2luZygpKQorICAgICAgICBSZW5k
ZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3QpLT5sYXllcigpOworICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAm
JiAhbGF5ZXItPmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk4LDQgKzM5MywyOSBA
QCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zIHJlYXNvbnMpCit7CisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwor
CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Rm9yY2VkT25NYWluVGhy
ZWFkKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiRm9yY2VkIG9uIG1haW4gdGhyZWFk
LCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVw
YWludE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgc2xvdyByZXBh
aW50IG9iamVjdHMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVy
cykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5l
ZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICIpOworICAgIGlmIChy
ZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3Rz
LCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9j
dW1lbnQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJJcyBpbWFnZSBkb2N1bWVudCwg
Iik7CisKKyAgICBpZiAoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSkKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5yZXNpemUoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSAtIDIpOworICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdAoreworICAgIHJldHVybiBt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggYzJmMWZhODY1
MGVhYjQwMjVkZTNkYmQ5MjZkMGM2Zjk4NTIzNTFmMi4uZjI1MTBjY2E1MTI3YmUwZmE4MmM4OTVj
ZWY3ODlhOGI0ZThlNDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVy
cyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNG
aXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpIHsgfQogCisgICAgc3Rh
dGljIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29ucyk7CisgICAgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNU
ZXh0KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGlu
YXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDVkMzdiZTJmNTMz
YWU2YWZlMzU5NDczOWI2ZTg2ZDdjNTU4ZDMzMjMuLjFhZDVmYTI4YzY3MmRlMWIwNDhjODM5ODVk
ZTM2M2FhNjg4MzY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMjI3LDE4ICsy
MjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMo
VGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbgogCiAgICAgaWYgKG1fc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgewogICAgICAgICB3cml0ZUluZGVudCh0
cywgaW5kZW50ICsgMSk7Ci0gICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFk
IGJlY2F1c2U6ICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFk
KQotICAgICAgICAgICAgdHMgPDwgIkZvcmNlZCBvbiBtYWluIHRocmVhZCwgIjsKLSAgICAgICAg
aWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8
PCAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVy
cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgdmlld3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3
aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQotICAgICAgICAgICAgdHMgPDwgIkhhcyBub24t
bGF5ZXIgZml4ZWQgb2JqZWN0cywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdl
RG9jdW1lbnQpCi0gICAgICAgICAgICB0cyA8PCAiSXMgaW1hZ2UgZG9jdW1lbnQiOwotICAgICAg
ICB0cyA8PCAiKVxuIjsKKyAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQg
YmVjYXVzZTogIiA8PCBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNBc1RleHQobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KSA8PCAiKVxuIjsKICAgICB9CiAKICAgICBpZiAobV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAh
PSBJbnRQb2ludCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCAzYzdjZjZlNTZkYzc3YjIxYjQyOTgxOTg1YzAzZDBhMGUwOTg3YTJkLi5lYzI0MDFkMTky
MDYyODcyYWQyMDEyYThkMThiNDk2MzY5N2VjOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTMxMTksNiArMzExOSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdz
KQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAoaXNGaXhlZFBv
c2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGlzQ29t
cG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50
aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0
IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRl
ZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMgY2FzZS4KQEAgLTQ3MzIsNiArNDczNSwxOSBA
QCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllcjo6bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25z
dAogewogICAgIHJldHVybiBtX2JhY2tpbmcgPyBtX2JhY2tpbmctPmxheWVyRm9yU2Nyb2xsQ29y
bmVyKCkgOiAwOwogfQorCitib29sIFJlbmRlckxheWVyOjppc0ZpeGVkUG9zaXRpb25Ob3RUb0Jl
UGFpbnRlZCgpIGNvbnN0Cit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9yZW5kZXJlci0+
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBpZiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQoKSkgeworICAgICAg
ICAvLyBXaGVuIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciBmaXhlZCBwb3NpdGlvbiBpcyBl
bmFibGVkLCBhbGwgZml4ZWQgcG9zaXRpb24gbGF5ZXJzIHN0YXJ0aW5nIGEgc3RhY2tpbmcgY29u
dGV4dAorICAgICAgICAvLyBhbmQgbm90IHVuZGVyIGEgdHJhbnNmb3JtZWQgZWxlbWVudCBzaG91
bGQgYmUgY29tcG9zaXRlZCwgb3IgaXMgbm90IHRvIGJlIHBhaW50ZWQgKGUuZy4gb3V0LW9mLXZp
ZXcpLgorICAgICAgICBpZiAoIWlzQ29tcG9zaXRlZCgpICYmIGlzU3RhY2tpbmdDb250ZXh0KCkg
JiYgbV9yZW5kZXJlci0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uICYmIG1f
cmVuZGVyZXItPmNvbnRhaW5lcigpID09IG1fcmVuZGVyZXItPnZpZXcoKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KICNlbmRpZgogCiBi
b29sIFJlbmRlckxheWVyOjpwYWludHNXaXRoVHJhbnNmb3JtKFBhaW50QmVoYXZpb3IgcGFpbnRC
ZWhhdmlvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXgg
NjVmMTA3MGFiMmQ2NmRmMmQ5NDcxNjU0ZWNjOWNjMGUwMTdjNjFjNS4uMzljYTUyNzI0MTIxZGRh
NTlhMTZiMzY3NGU2YWRlMzE2OGQyNDhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKQEAgLTY1Niw2ICs2NTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGlj
c0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBH
cmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIGJvb2wg
aXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSBjb25zdDsKICNlbHNlCiAgICAgYm9vbCBp
c0NvbXBvc2l0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaGFzQ29tcG9z
aXRlZE1hc2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4NzBiZjFkZGZhNzM5
NTljMGVlMGEyY2MxOGU5ZWZhODg1OWNmMjFjLi4yNjY5OTFmYWMxNzhkYzY4NzJkMmUzZDVkMDhh
NGU5NDVmMGJhMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTk2MSw5ICsxOTYxLDkgQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3Qq
IHJlbmRlcmUKIAogICAgIC8vIEZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHRoYXQgYXJlIGludmlz
aWJsZSBpbiB0aGUgY3VycmVudCB2aWV3IGRvbid0IGdldCB0aGVpciBvd24gbGF5ZXIuCiAgICAg
aWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKSkgewot
ICAgICAgICBJbnRSZWN0IHZpZXdCb3VuZHMgPSBJbnRSZWN0KEludFBvaW50KGZyYW1lVmlldy0+
c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbigpKSwgZnJhbWVWaWV3LT5sYXlvdXRTaXplKCkp
OwotICAgICAgICBJbnRSZWN0IGxheWVyQm91bmRzID0gY2FsY3VsYXRlQ29tcG9zaXRlZEJvdW5k
cyhsYXllciwgcm9vdFJlbmRlckxheWVyKCkpOwotICAgICAgICBpZiAoIXZpZXdCb3VuZHMuaW50
ZXJzZWN0cyhsYXllckJvdW5kcykpCisgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IGNh
bGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIsIHJvb3RSZW5kZXJMYXllcigpKTsKKyAgICAg
ICAgbGF5ZXJCb3VuZHMuc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBpZiAoIWZy
YW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhlbmNsb3NpbmdJbnRSZWN0
KGxheWVyQm91bmRzKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZmI5MzJkYjFmNmM3MGVlNzM3MWVkZmZk
NGIwN2UzNzNmZDExNDJlOS4uMTUwOTQzNDVjNzg3YzFjMDliMDIwZjg3Y2FmMjcwNDliYzRmMjgx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ2NCw2ICsxNDY0LDIw
IEBAIFN0cmluZyBJbnRlcm5hbHM6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChEb2N1bWVudCog
ZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgcmV0dXJuIHBhZ2UtPnNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dCgpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjptYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29ucyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAor
eworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQor
CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gcGFnZS0+bWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnNBc1RleHQoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OmdhcmJhZ2VDb2xsZWN0
RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAppbmRleCA4YjFhZmE2M2NiYjgzMDFlYWNhMWVmNjcwYThiOTM5OGRkY2U2Y2IzLi40YzU2NTYz
ZGQzMmY2YWYzODhjYjA2ODBkYTJkZTdmNjNiOTJiMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKQEAgLTIwOSw2ICsyMDksOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlcGFpbnRS
ZWN0c0FzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBTdHJpbmcg
c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogCisgICAgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50KiwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OworCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVz
b3VyY2VzKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgdm9pZCBhbGxv
d1JvdW5kaW5nSGFja3MoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCA4MzUyYmRlZjc2NWIzNDI2NTZkYjE2NGM1MGQ1MzJhOTc5YjFiNTgyLi45YmVhYzYxZTk3
ZDc3OWVmNThhNDBkZWQwMjg3MzZmMzhkMjU2NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC0xNjYsNiArMTY2LDcgQEAKICAgICBET01TdHJpbmcgbGF5ZXJUcmVlQXNU
ZXh0KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGZs
YWdzKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICBET01TdHJpbmcgc2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CisgICAgRE9NU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGluIERvY3VtZW50IGRv
Y3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICBET01TdHJpbmcgcmVwYWludFJl
Y3RzQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA4NDE2YjkxMDE5YTk3Njk2MmNmOWZmYzAzOGQ2Zjg4
YzUyN2NlMDE1Li44MDU4M2I1NzIwN2YxMTVjYzQyYTI1YzEwMDVmODcyZjMzMGZkNzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCkBAIC0yMDEsNiArMjAxLDcgQEAgRVhQT1JUUwogICAgICAgICA/
anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RP
TUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdU
RkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFy
a2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBX
ZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAy
QEBaCisgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNv
cmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9maXJzdENoaWxkQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2xhc3RDaGlsZEBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0MkNGTGl0ZS5kZWYKaW5kZXggMDAzZmM4YjZkMjRlN2FlNDE0YzQ3ZTJlNWE3M2ZhYzkwZTdk
ZTU3Yy4uMDhlZDFhYzBkY2YwYjEyYThhNzU5MWQwNjIxMmY4ZDJiN2I1MzE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTk0LDYgKzE5NCw3IEBAIEVYUE9SVFMKICAg
ICAgICAgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNA
UEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNv
cmVAQEBXVEZAQEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRN
YXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRN
YXJrZXJAMkBAWgorICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRAUGFn
ZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/bmV4dFNpYmxpbmdAQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/Zmlyc3RDaGls
ZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9sYXN0
Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggYzE4NzQ1YzQ2MjliZTliNjdhODkzN2IxZjkyMTFkZWEyZTA3MmE5
NS4uMzc1MTgyNzFiMjUxZDg4MWU0NmZiOWQwYjI1NzFhMTI2OTM5NTNjOSAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC0zMSw2ICszMSw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxM3NldFBhZ2lu
YXRpb25FUktOU18xMFBhZ2luYXRpb25FOwogX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFnZVNjYWxl
RmFjdG9yRWZSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2Fs
ZUZhY3RvckVmOwogX1pON1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXY7
CitfWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2Owog
X1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRpYUViOwogX1pON1dlYkNvcmU0dG9KU0VQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RF
OwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOU18xMFNoYWRvd1Jvb3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1ZmZlMWE5MzE1NTFiMGY4NDIxOTMwOGRi
OGIzN2YyNjJkMDg5MzUuLjExZmYxNmE2NGFjMGY4ZDZhYThkZTU3ZWM4YTJmNTE5ZTE4ZDc5MmIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMS0yOCAgWGlhbnpodSBXYW5nICA8d2FuZ3hp
YW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNW
aXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3
IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZC9tb2RpZmllZCB0ZXN0IHRvIGVuc3VyZSBzbG93LXNjcm9s
bGluZyBpcyBub3QgdHJpZ2dlcmVkIGJ5IG91dC1vZi12aWV3IGZpeGVkLXBvc2l0aW9uZWQgZWxl
bWVudHMsCisgICAgICAgIGFuZCBlbnN1cmUgb3V0LW9mLXZpZXcgY2hlY2tpbmcgaXMgY29ycmVj
dCB3aGVuIHBhZ2UgaXMgc2NhbGVkLgorCisgICAgICAgIEJUVywgZml4ZWQgc29tZSB0ZXN0cyB0
aGF0IHNldCBlbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24gaW4gb25sb2FkIGhhbmRs
ZXIgd2hpY2ggbWF5IG5vdCB0YWtlIGVmZmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBsYXRlLgorICAg
ICAgICBMZWF2ZSB0aGUgaW1hZ2UgbWlzbWF0Y2hlcyB0byBidWcgOTY4MzkuCisKKyAgICAgICAg
KiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2Nh
bGUtZG93bi5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbDoKKyAgICAgICAgKiBjb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbDoK
KyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29t
cG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWw6Cisg
ICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1s
OgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91
dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0
aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3Np
dGlvbi1vdXQtb2Ytdmlldy5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRyaWdn
ZXJlZC4gRXhwZWN0YXRpb24gaXMgdW5jaGFuZ2VkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGFj
Y29yZGluZyB0byB0aGUgY2hhbmdlIG9mIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zLgorCiAy
MDEyLTExLTI4ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TW92ZSBlbXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBGcmFtZUxvYWRl
cjo6aW5pdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLWRvd24uaHRtbAppbmRleCBmMzM1ZWYyYTNkYTM3MTE1NTg5ZjFkYjJiYjcwYmNlMjU1NTZl
NjljLi42OWVjMTEyNDUyYTg1ZGUzNWY1MjhhYzJhYTM2YTNiZDA3NWY1YjU0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKQEAg
LTEzLDE3ICsxMywxNSBAQAogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxl
KCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwg
MCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0
cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3Rvcigw
LjUsIDAsIDApOwogICB9CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2Nh
bGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgorPGJvZHkgc3R5bGU9
IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CiA8ZGl2IGNsYXNzPSJmaXhlZC1uby16LWlu
ZGV4Ij5URVNUPC9kaXY+PGJyPgogPGRpdiBjbGFzcz0iZml4ZWQtd2l0aC16LWluZGV4Ij5URVNU
PC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVk
LXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwKaW5kZXggMDIzNzBkN2ExMGQzYmRhZjFkOGQwY2MwODZh
MDcyYmM5ZTJlMmFmNS4uNWU2MGY3MjQyZWRiYTE3NGUyZWNkZWRjMzQzODJkZjBiYTA3YmUzYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1z
Y3JvbGwuaHRtbApAQCAtMTQsMTggKzE0LDE2IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAg
ZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0
aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVG
YWN0b3IoMiwgMCwgMCk7Ci0gICAgfQotICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsMTAwKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdz
LnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKICAgfQorICB3
aW5kb3cuc2Nyb2xsVG8oMTAwLDEwMCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBz
dHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5v
LXotaW5kZXgiPlRoaXMgdGVzdCBzaG91bGQgbm90IGhpdCBhbiBhc3NlcnRpb24gaW4gUmVuZGVy
R2VvbWV0cnlNYXAgaW4gZGVidWcgYnVpbGRzPC9kaXY+PGJyPgogPGRpdiBjbGFzcz0iZml4ZWQt
d2l0aC16LWluZGV4Ij5UaGlzIHRlc3Qgc2hvdWxkIG5vdCBoaXQgYW4gYXNzZXJ0aW9uIGluIFJl
bmRlckdlb21ldHJ5TWFwIGluIGRlYnVnIGJ1aWxkczwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9z
aXRlZC1wYWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAppbmRleCBlYWU3YTI5NmJh
YzFlOTc3YmZiYWRiMDY4YzgzY2JhZTNhMDMxYTczLi44YjU0NWI3ZDQwOTgwZTM5M2JkZDRjNGRi
ODY4ZWYwMGMyZWFkMGYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUuaHRtbApAQCAtMTMsMTcgKzEzLDE1IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4K
LSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBv
c2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2Nh
bGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9y
Rml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBh
Z2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKICAgfQorICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4K
Kzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0i
Zml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgt
ei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1z
Y2FsZS1kb3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1w
b3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRleCAyYzZh
MDFlYjgwNGM3NjQxYzdlZGQzNTFlNjM4ODk2ZWE5NGJiNTYyLi5jYjlkNDI1MTgwYzc5OWRjMGM2
YzQ3NDBlNDlmMDZkNDU3ZDMyMTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRv
d24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbApAQCAtMTMsMTQgKzEz
LDE0IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBp
ZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5z
ZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwotICAgIH0K
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
dHJ1ZSk7CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAg
d2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsK
KyAgfQorICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwogCisgIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZnJhbWUnKS5jb250ZW50RG9jdW1lbnQub3BlbigpOwogICAgIGQud3JpdGUo
IjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmZpeGVkOyB6LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVT
VDwvZGl2PiIpOwogICAgIGQuY2xvc2UoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2Nh
bGUuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAppbmRleCA4ZTNkMzdhYWQ3MmY2OTU1
NDMzZDgyODY5OTE5N2Y2ZjI1ZWRlZjRlLi40ZWVmMTQ4NTEyYjkzODNhOTc5MDEzNmVmZWIyMDFi
MWI5YjI0OTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS5odG1sCkBAIC0xMywxNCArMTMsMTQgQEAKIH0KIDwvc3R5bGU+CiA8
c2NyaXB0PgotICBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9y
Rml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7CisgIH0KKyAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIAorICBmdW5jdGlvbiB0ZXN0
KCkgewogICAgIHZhciBkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVu
dERvY3VtZW50Lm9wZW4oKTsKICAgICBkLndyaXRlKCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjpmaXhl
ZDsgei1pbmRleDogMTsgbGVmdDsgMTBweDsnPlRFU1Q8L2Rpdj4iKTsKICAgICBkLmNsb3NlKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCmluZGV4IDIxZDYwODI1NzVlNDk0YmI3ZTI1MzcxMmEw
YWI3YjhmMDU0ODlkZjkuLmY3NDg4Mzc1MDFjMDdlMTU0YzRmYTM0NzA5MTRiMzI0NGJlOTMzODMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21w
b3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCkBAIC0xNSwxNyArMTUsMTUgQEAKIH0KIDwvc3R5
bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93LmludGVy
bmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFi
bGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKICAgfQorICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3Jp
cHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4
O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBw
eDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYg
Y2xhc3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNm
b3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Z2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5o
dG1sCmluZGV4IGJmODg4YTYzOTBmNDIzMWJiNzU0Yzk3ODg3MmRjMmNiZjc2YTE3ZjUuLmE1ODhj
MjMyYjUwMmI2YTNjNDI0ZDdhMDEzYjFlNTM0NTE0YjlmZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAg
LTE1LDE3ICsxNSwxNSBAQAogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxl
KCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDAp
OwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQodHJ1ZSk7CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1
ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwg
MCwgMCk7CiAgIH0KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgp
OyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHlsZT0id2lk
dGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgi
PlRFU1Q8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rp
dj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNy
ZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQt
b2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1Mzc2NjU0ODI5ZGNiYmNk
OWRmOGQyYmUyYjJjMDE2MTA2M2U2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2Fs
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjMgQEAKK05vdCBzY2FsZWQ6CisoR3JhcGhpY3NM
YXllcgorICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFw
aGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAgICAgKGNoaWxkcmVu
IDIKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gNjAwLjAwIDAu
MDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkK
KyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTAuNToKKyhHcmFwaGljc0xheWVyCisgIChi
b3VuZHMgNDAwLjAwIDUwOC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRzIDgwMC4wMCAxMDE2LjAwKQor
ICAgICAgKHRyYW5zZm9ybSBbMC41MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMC41MCAwLjAwIDAu
MDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAo
Y2hpbGRyZW4gNAorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA4
LjAwIDEwMDguMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQor
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAxMDAwLjAwIDAuMDAp
CisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAo
Ym91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkK
KyAgKQorKQorU2NhbGU9MS41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyAxMjcyLjAwIDE1
MjQuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChhbmNob3Ig
MC4wMCAwLjAwKQorICAgICAgKGJvdW5kcyA4NDguMDAgMTAxNi4wMCkKKyAgICAgICh0cmFuc2Zv
cm0gWzEuNTAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuNTAgMC4wMCAwLjAwXSBbMC4wMCAwLjAw
IDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgKGNoaWxkcmVuIDEKKyAg
ICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAg
ICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNj
YWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQt
cG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRiZjE3NDI5MTk0
MWYzYjQ4MzYwNDgwZTUzNmM0NmZhNmZlMzk2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3
LXNjYWxlZC5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgPHN0eWxlPgorICAgIC5maXhlZCB7CisgICAgICBwb3NpdGlvbjogZml4ZWQ7Cisg
ICAgICB3aWR0aDogMTBweDsKKyAgICAgIGhlaWdodDogMTBweDsKKyAgICB9CisgIDwvc3R5bGU+
CisKKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KHRydWUp
OworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIikuaW5uZXJUZXh0
ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyIpLmlubmVyVGV4dCA9
IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVudCk7CisKKyAgICAg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOworCisg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxheWVyVHJlZVNjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5
ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWREb3duIikuaW5uZXJUZXh0ID0gaW50
ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKworICAgICAgICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRQYWdlU2NhbGVGYWN0b3IoMS41LCAwLCAwKTsKKworICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibGF5ZXJUcmVlU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5
ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZFVwIikuaW5uZXJUZXh0ID0gaW50
ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0s
IDApOworICAgICAgfSwgZmFsc2UpOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5PgorICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+CisgICAgTm90IHNjYWxlZDoKKyAg
ICA8cHJlIGlkPSJsYXllclRyZWUiPjwvcHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zIj48L3ByZT4KKyAgICBTY2FsZT0wLjU6CisgICAgPHByZSBpZD0ibGF5ZXJU
cmVlU2NhbGVkRG93biI+PC9wcmU+CisgICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNTY2FsZWREb3duIj48L3ByZT4KKyAgICBTY2FsZT0xLjU6CisgICAgPHByZSBpZD0ibGF5
ZXJUcmVlU2NhbGVkVXAiPjwvcHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zU2NhbGVkVXAiPjwvcHJlPgorICA8L2Rpdj4KKworICA8IS0tIE5vIGxheWVyIGluIGFu
eSBjYXNlLiAtLT4KKyAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IC0xMDBweCI+PC9k
aXY+CisKKyAgPCEtLSBIYXMgY29tcG9zaXRlZCBsYXllciB3aGVuIHNjYWxlZCBkb3duOyBubyBs
YXllciB3aGVuIG5vdCBzY2FsZWQgb3Igc2NhbGVkIHVwLiAtLT4KKyAgPGRpdiBjbGFzcz0iZml4
ZWQiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0OiAx
MDAwcHgiPjwvZGl2PgorCisgIDwhLS0gSGFzIGNvbXBvc2l0ZWQgbGF5ZXIgd2hlbiBub3Qgc2Nh
bGVkIGFuZCBzY2FsZWQgZG93bjsgbm8gbGF5ZXIgc2NhbGVkIHVwLiAtLT4KKyAgPGRpdiBjbGFz
cz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogNjAwcHgiPjwvZGl2PgorCisgIDwhLS0g
QWx3YXlzIGhhcyBjb21wb3NpdGVkIGxheWVyLiAtLT4KKyAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0
eWxlPSJ0b3A6IDBweDsgbGVmdDogMHB4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9z
aXRpb24tb3V0LW9mLXZpZXcuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNy
ZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKaW5kZXggYzJmNmU0OTIwMzAz
ZDE2OGUzYTBlMTBiMzY2MDM3OGUwMDlmOWVkYi4uMzA2ZTBiMTYwNGZjNjljMTQxYTkyNTJmZWE1
Y2M1ZDU2OWE4MmEyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5o
dG1sCkBAIC0xOCw3ICsxOCw4IEBACiAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVydHJlZSIpLmlubmVyVGV4dCA9IHdpbmRv
dy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZSIpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMu
bGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVy
bmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVudCk7CiAgICAgICB9LCBmYWxz
ZSk7CiAgICAgfQogICA8L3NjcmlwdD4KQEAgLTI2LDcgKzI3LDggQEAKIAogPGJvZHk+CiAgIDxk
aXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4KLSAgICA8cHJlIGlkPSJsYXllcnRyZWUiPjwvcHJl
PgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+CisgICAgPHByZSBpZD0ibWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJlPgogICA8L2Rpdj4KIAogICA8IS0tIE5laXRoZXIgb2Yg
dGhlIGZvbGxvd2luZyBlbGVtZW50cyBnZXRzIGl0cyBvd24gbGF5ZXIuIC0tPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjU5OWI2OTk4
NjA1MTE3YTM2ZGFiZDhjNmNjMTEwMTFlM2I0NzQwNC4uY2UwZGVhZTYwOGZhYTdmNzgxYTJlODVl
MWJmNTIyNjJlYjNjNGZiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0zNjAwLDggKzM2MDAsMTAgQEAgY3JidWcuY29tLzEzMjg5OCBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbCBbIEZhaWx1
cmUgUGEKICMgVGltaW5nIG91dCBvbiBzb21lIFdpbmRvd3MgYm90cwogd2Via2l0Lm9yZy9iLzg5
NTEwIFsgV2luIF0gZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQogCi13ZWJraXQub3JnL2IvOTY4MzkgY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBQYXNzIF0KLXdlYmtpdC5vcmcvYi85NjgzOSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0
dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3Jt
LWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dl
YmtpdC5vcmcvYi85NjgzOSBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFu
c2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi85NjgzOSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1z
Y2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1z
Y2FsZS1kb3duLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NjgzOSBw
bGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4
ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84OTcwMiBjb21wb3NpdGluZy9zY2FsaW5n
L3RpbGVkLWxheWVyLXJlY3Vyc2lvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdl
YmtpdC5vcmcvYi84OTcwMiBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9z
aXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgUGFzcyBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Ny
b2xsaW5nLWV4cGVjdGVkLnR4dAppbmRleCBiZTQwODBjZjFjYmFhOGRkMWNlYjFmOWRiMTIyNWM4
ZjMxMTE1YjgzLi4zMmVmMGNlNWNjNzU5ZWZiZjdhMDIwZWM0ZjFiYmIxOGJkMjBlMmFjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmct
dHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0
ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogKFNjcm9sbGluZyBub2RlCiAgICh2aWV3cG9ydCByZWN0
IDAgMCA4MDAgNjAwKQogICAoY29udGVudHMgc2l6ZSA4MDAgNjAwKQotICAoU2Nyb2xsaW5nIG9u
IG1haW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgKQorICAoU2Ny
b2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cykK
ICkKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDI4Yzc5N2NkZDJm
ZTNkNjBhMDBlOGY4OGNhMzQxYWNhZTA0ZWJkZmEuLjZmNDliOTgwMzMxOTAwY2RkNDJiZDI0NTkw
MjJmNWE2NWI1ZGIzMjQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0xMS0yOCAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xv
d1JlcGFpbnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVkIHBv
c2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3ltYm9sLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcjoKKwogMjAxMi0xMS0yNiAgSGFsdG9uIEh1byAgPGhhbHRvbi5odW9AaW50ZWwuY29t
PgogCiAgICAgICAgIFtFRkxdIENNYWtlIHNob3dzIEVOQUJMRV8zRF9SRU5ERVJJTkcgYW5kIEVO
QUJMRV9XRUJHTCBpcyBzdGlsbCBPRkYgd2hlbiBBQyBpcyBlbmFibGVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177356</attachid>
            <date>2012-12-03 15:46:32 -0800</date>
            <delta_ts>2012-12-04 10:15:22 -0800</delta_ts>
            <desc>Rebase and adjust indent</desc>
            <filename>bug-102543-20121203234358.patch</filename>
            <type>text/plain</type>
            <size>42046</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwZTg4MGY1M2ViOWQ1
ZjEwZmI3OGY2ZWU1MmU2NmZjNmU3ZGQ3OS4uMDYyOWExYTEyYWIyMDFhZjdiYjdmMWY3NGViODk0
NjQ3YjIzZTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMi0wMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNjQ0NC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggOGRkNTZhY2U1NTllOWJiNTJhNTZkNDc0ZWYyNjU1ZWZlNzYxYjcxMy4u
N2JjZjNmZWU2YjJmYzhiZGRkMGZiOGE0YzMyYzgzMzhkZGE2YjliNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc2MSw2ICs3NjEsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMjVzdXNwZW5kU2NyaXB0ZWRBbmltYXRp
b25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXpl
RWkKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5RWQK
K19fWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2CiBf
X1pON1dlYkNvcmU0UGFnZTMyc2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWRFYgogX19a
TjdXZWJDb3JlNFBhZ2UzNXJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRXYKIF9f
Wk43V2ViQ29yZTRQYWdlMzZzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnNFYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNDU5Mzg2Yzc5MzZkZmQ2ODM5NjkzMDJlMDQzY2M3MDU4ZGE1
YzVlZC4uNDg4NTg4MjI3YTAxMjViNjFlZGQxYmZmNmNjYzc0MmZlZmViOWRlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yNDYsOCArMjQ2LDcgQEAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIFBhZ2U6
OnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkKIAogU3RyaW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dCgpCiB7Ci0gICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5k
b2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV9tYWlu
RnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCiAgICAgaWYgKFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCiAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0KCk7CkBAIC0yNTUsNiArMjU0LDE2IEBAIFN0cmluZyBQYWdlOjpzY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIFBh
Z2U6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkKK3sKKyAgICBtX21haW5GcmFt
ZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3Qg
Vmlld01vZGVJbmZvIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2Rl
IHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0
ZmEzNmIwMGMuLjZjMzk1NTBmYWUwNWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCkBAIC0xOTYsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAg
ICBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0
aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jl
c3NUcmFja2VyKiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAppbmRleCBjZDk0MzJjMmE4MmQ4ZTAxODAwNzQ3YzRiMmZkMDg3NGUwOWViMjYy
Li5kZTFlMWU1Nzg2NDI2ZTNmZmYzZTY1OWM5ZjYxNmFiZTMxMDc3NTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CkBAIC02NSwzNyArNjUsMzIgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkpOwogfQogCi1zdGF0aWMgaW50IGZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQoaW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgbWF4VmFsdWUsIGlu
dCBzY3JvbGxPcmlnaW4sIGZsb2F0IGRyYWdGYWN0b3IpCitzdGF0aWMgaW50IGZpeGVkUG9zaXRp
b25TY3JvbGxPZmZzZXQoaW50IHZpc2libGVDb250ZW50U2l6ZSwgaW50IGNvbnRlbnRzU2l6ZSwg
aW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFj
dG9yLCBib29sIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgaWYg
KCFtYXhWYWx1ZSkKKyAgICBpbnQgbWF4VmFsdWUgPSBjb250ZW50c1NpemUgLSB2aXNpYmxlQ29u
dGVudFNpemU7CisgICAgaWYgKG1heFZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgaWYgKCFzY3JvbGxPcmlnaW4pIHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgMCkK
LSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xs
UG9zaXRpb24gPiBtYXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDw9IDApCisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFs
dWUpCiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IG1heFZhbHVlOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+IDApCi0gICAgICAgICAgICBzY3JvbGxQb3Np
dGlvbiA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQor
ICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCAtbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3Jv
bGxQb3NpdGlvbiA9IC1tYXhWYWx1ZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjcm9sbFBv
c2l0aW9uICogZHJhZ0ZhY3RvcjsKKworICAgIGZsb2F0IGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1l
bnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lID8gMSA6IChjb250ZW50c1NpemUgLSB2aXNpYmxlQ29u
dGVudFNpemUgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heFZhbHVlOworICAgIHJldHVybiBzY3Jv
bGxQb3NpdGlvbiAqIGRyYWdGYWN0b3IgLyBmcmFtZVNjYWxlRmFjdG9yOwogfQogCiBJbnRTaXpl
IHNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2Fs
ZUZhY3RvciwgYm9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAg
IEludFNpemUgbWF4T2Zmc2V0KGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRS
ZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5o
ZWlnaHQoKSk7Ci0gICAgCi0gICAgRmxvYXRTaXplIGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRz
TGF5b3V0UmVsYXRpdmVUb0ZyYW1lID8gRmxvYXRTaXplKDEsIDEpIDogRmxvYXRTaXplKAotICAg
ICAgICAoY29udGVudHNTaXplLndpZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAq
IGZyYW1lU2NhbGVGYWN0b3IpIC8gbWF4T2Zmc2V0LndpZHRoKCksCi0gICAgICAgIChjb250ZW50
c1NpemUuaGVpZ2h0KCkgLSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgKiBmcmFtZVNjYWxl
RmFjdG9yKSAvIG1heE9mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICBpbnQgeCA9IGZpeGVkUG9zaXRp
b25TY3JvbGxPZmZzZXQoc2Nyb2xsUG9zaXRpb24ueCgpLCBtYXhPZmZzZXQud2lkdGgoKSwgc2Ny
b2xsT3JpZ2luLngoKSwgZHJhZ0ZhY3Rvci53aWR0aCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0g
ICAgaW50IHkgPSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLnkoKSwg
bWF4T2Zmc2V0LmhlaWdodCgpLCBzY3JvbGxPcmlnaW4ueSgpLCBkcmFnRmFjdG9yLmhlaWdodCgp
IC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0KKyAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxP
ZmZzZXQodmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBz
Y3JvbGxQb3NpdGlvbi54KCksIHNjcm9sbE9yaWdpbi54KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZp
eGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpOworICAgIGludCB5ID0gZml4ZWRQb3Np
dGlvblNjcm9sbE9mZnNldCh2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCksIGNvbnRlbnRzU2l6
ZS5oZWlnaHQoKSwgc2Nyb2xsUG9zaXRpb24ueSgpLCBzY3JvbGxPcmlnaW4ueSgpLCBmcmFtZVNj
YWxlRmFjdG9yLCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKICAgICByZXR1
cm4gSW50U2l6ZSh4LCB5KTsKIH0KIApAQCAtMzQzLDggKzMzOCw4IEBAIGJvb2wgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcq
IGZyYW1lVmllCiAgICAgICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dCA9ICppdDsKICAgICAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1v
ZGVsT2JqZWN0KCkgfHwgIXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZp
ZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJh
aW5lZEJveE1vZGVsT2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdCktPmxheWVyKCk7CisgICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmICFs
YXllci0+aXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTgsNCArMzkzLDI5IEBAIFN0
cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRv
cjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMgcmVhc29ucykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAg
ICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQp
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIp
OworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50
T2JqZWN0cykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJlcGFpbnQg
b2JqZWN0cywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFz
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9i
amVjdHMgd2l0aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7CisgICAgaWYgKHJlYXNv
bnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICIp
OworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVu
dCkKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50LCAiKTsK
KworICAgIGlmIChzdHJpbmdCdWlsZGVyLmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVy
LnJlc2l6ZShzdHJpbmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1haW5U
aHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4NjUwZWFi
NDAyNWRlM2RiZDkyNmQwYzZmOTg1MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5NWNlZjc4
OWE4YjRlOGU0ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdy
YXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVk
VG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBzdGF0aWMg
U3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zKTsKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQo
KSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1MzNhZTZh
ZmUzNTk0NzM5YjZlODZkN2M1NThkMzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4NWRlMzYz
YWE2ODgzNjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTggKzIyNyw3
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uCiAKICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBp
bmRlbnQgKyAxKTsKLSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVj
YXVzZTogIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0g
ICAgICAgICAgICB0cyA8PCAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAgICBpZiAo
bV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJI
YXMgc2xvdyByZXBhaW50IG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFz
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQot
ICAgICAgICAgICAgdHMgPDwgIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhv
dXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIG5vbi1sYXll
ciBmaXhlZCBvYmplY3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1
bWVudCkKLSAgICAgICAgICAgIHRzIDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAgICAgIHRz
IDw8ICIpXG4iOworICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNh
dXNlOiAiIDw8IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIDw8
ICIpXG4iOwogICAgIH0KIAogICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IElu
dFBvaW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4
IDVmNWJhMzI2YTgzZDQyYjM3MDY1NTAzNjBjZTE3ZDQ1Y2E4ZDM1N2EuLjc3N2EyZTZhMDc1MGZl
MzI4ZTIxMmU1NjMxODViNWEwY2QyZGY3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcApAQCAtMzExOSw2ICszMTE5LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNo
b3VsZFN1cHByZXNzUGFpbnRpbmdMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiB2b2lkIFJlbmRl
ckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChpc0ZpeGVkUG9zaXRp
b25Ob3RUb0JlUGFpbnRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaXNDb21wb3Np
dGVkKCkpIHsKICAgICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcg
cGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2Ug
bmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdp
dGggdGhlIHdyb25nIHJvb3QgaW4gdGhpcyBjYXNlLgpAQCAtNDczMiw2ICs0NzM1LDE5IEBAIEdy
YXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyOjpsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fYmFja2luZyA/IG1fYmFja2luZy0+bGF5ZXJGb3JTY3JvbGxDb3JuZXIo
KSA6IDA7CiB9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6OmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWlu
dGVkKCkgY29uc3QKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlcmVyLT5kb2N1
bWVudCgpLT5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8v
IFdoZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIGZpeGVkIHBvc2l0aW9uIGlzIGVuYWJs
ZWQsIGFsbCBmaXhlZCBwb3NpdGlvbiBsYXllcnMgc3RhcnRpbmcgYSBzdGFja2luZyBjb250ZXh0
CisgICAgICAgIC8vIGFuZCBub3QgdW5kZXIgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHNob3VsZCBi
ZSBjb21wb3NpdGVkLCBvciBpcyBub3QgdG8gYmUgcGFpbnRlZCAoZS5nLiBvdXQtb2Ytdmlldyku
CisgICAgICAgIGlmICghaXNDb21wb3NpdGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiBt
X3JlbmRlcmVyLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbV9yZW5k
ZXJlci0+Y29udGFpbmVyKCkgPT0gbV9yZW5kZXJlci0+dmlldygpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIGJvb2wg
UmVuZGVyTGF5ZXI6OnBhaW50c1dpdGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWludEJlaGF2
aW9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAwYzBj
ZDc5ODIxYmFlOTJjODk1OTk0YjBjNzdkMzMwMTFiZWFhZjY5Li5hMmFmNTZhY2VkZWJkOTQ2Yjhl
OTM4ZjZkOWRjMzMyNmZhYzBlZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaApAQCAtNjU1LDYgKzY1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5
ZXIqIGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgYm9vbCBpc0Zp
eGVkUG9zaXRpb25Ob3RUb0JlUGFpbnRlZCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIGlzQ29t
cG9zaXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNDb21wb3NpdGVk
TWFzaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDcxYTljYzQ5NWI3NzZlNjVk
ZWJhOTdlYzA4MThkMGMxMDIyMGVhZmYuLjZiYzlhNzRiNWZhMGM2NWYzYWEzNmM3NmExM2U5ZmQ4
ZTY0MTAxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0xOTc0LDkgKzE5NzQsOSBAQCBib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVu
ZGVyZQogCiAgICAgLy8gRml4ZWQgcG9zaXRpb24gZWxlbWVudHMgdGhhdCBhcmUgaW52aXNpYmxl
IGluIHRoZSBjdXJyZW50IHZpZXcgZG9uJ3QgZ2V0IHRoZWlyIG93biBsYXllci4KICAgICBpZiAo
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKSB7Ci0gICAg
ICAgIEludFJlY3Qgdmlld0JvdW5kcyA9IEludFJlY3QoSW50UG9pbnQoZnJhbWVWaWV3LT5zY3Jv
bGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkpLCBmcmFtZVZpZXctPmxheW91dFNpemUoKSk7Ci0g
ICAgICAgIEludFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGxh
eWVyLCByb290UmVuZGVyTGF5ZXIoKSk7Ci0gICAgICAgIGlmICghdmlld0JvdW5kcy5pbnRlcnNl
Y3RzKGxheWVyQm91bmRzKSkKKyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gY2FsY3Vs
YXRlQ29tcG9zaXRlZEJvdW5kcyhsYXllciwgcm9vdFJlbmRlckxheWVyKCkpOworICAgICAgICBs
YXllckJvdW5kcy5zY2FsZShwYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIGlmICghZnJhbWVW
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKGVuY2xvc2luZ0ludFJlY3QobGF5
ZXJCb3VuZHMpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5NGEzYjA1MmVjMGNmYjljOTUzOTczNmI4NTZm
YWZlNDczZGZkMTRhLi5mNTJlYTk5NmQwMmZmMWE4ODI5OGNkNTQwM2I5NTNjNjBjN2QzMWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDY1LDYgKzE0NjUsMjAgQEAg
U3RyaW5nIEludGVybmFsczo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0KCk7CiB9CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7Cisg
ICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAg
ICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwYWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dCgpOworfQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1
bWVudFJlc291cmNlcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogewogICAgIGlmICghZG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmlu
ZGV4IGI5OWYzZTNhYjAwYmI0MWMzNjczYWE2YTIxNmM1NmI5MGFlOGQ5YjQuLjRiMTM2MTQ4ZDc4
NzZjMTZhMjJiNjNhMWNkMDRjODRhNmQwNDI3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaApAQCAtMjA5LDYgKzIwOSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVwYWludFJlY3Rz
QXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3Jv
bGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAK
KyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7CisKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJj
ZXMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91
bmRpbmdIYWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4
IDE2N2QwZTU2YzYxMzdlNmUzY2Q3MWExY2YxMzZiNDk3OTNhYmIwZTYuLjVlZTQ4NzQ1NWZkNGU2
YmUyOTQ0YjEzMjg2NTVlNmY4MWNhN2U0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKQEAgLTE2Niw2ICsxNjYsNyBAQAogICAgIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQo
aW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3Mp
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICBET01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1l
bnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNB
c1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKaW5kZXggOGQwNGU2MDc5YzA1ZTk3ODExOTlkMjUzM2UwNjEwZjkw
ZmRlOWI1OC4uYzcyNzU1MTNmOWFhMDhkMWIwNjIzZmM0NWZmNDBhYmZiYTA5Mzc2YiAxMDA2NDQK
LS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0zMSw2ICszMSw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxM3Nl
dFBhZ2luYXRpb25FUktOU18xMFBhZ2luYXRpb25FOwogX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFn
ZVNjYWxlRmFjdG9yRWZSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTRQYWdlMjBzZXREZXZp
Y2VTY2FsZUZhY3RvckVmOwogX1pON1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0RXY7CitfWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dEV2OwogX1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRpYUViOwogX1pON1dlYkNvcmU0
dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVu
dFJlY3RFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDEzZDg2MDU0OWY3ZDNhMTBkYWFi
Mzk3ZGEyMmRkMGIyZDkxNDJiOTIuLjFiMzY2ZmFiZTVkMWFkZGVjMGEyZmY5ZWEzOWIyNDk0ODYz
OWQ5OGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMi0wMyAgWGlhbnpodSBXYW5nICA8
d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1v
Zi12aWV3IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZC9tb2RpZmllZCB0ZXN0IHRvIGVuc3VyZSBzbG93
LXNjcm9sbGluZyBpcyBub3QgdHJpZ2dlcmVkIGJ5IG91dC1vZi12aWV3IGZpeGVkLXBvc2l0aW9u
ZWQgZWxlbWVudHMsCisgICAgICAgIGFuZCBlbnN1cmUgb3V0LW9mLXZpZXcgY2hlY2tpbmcgaXMg
Y29ycmVjdCB3aGVuIHBhZ2UgaXMgc2NhbGVkLgorCisgICAgICAgIEJUVywgZml4ZWQgc29tZSB0
ZXN0cyB0aGF0IHNldCBlbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24gaW4gb25sb2Fk
IGhhbmRsZXIgd2hpY2ggbWF5IG5vdCB0YWtlIGVmZmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBsYXRl
LgorICAgICAgICBMZWF2ZSB0aGUgaW1hZ2UgbWlzbWF0Y2hlcyB0byBidWcgOTY4MzkuCisKKyAg
ICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUtZG93bi5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbDoKKyAgICAgICAgKiBj
b21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUu
aHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJh
bWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0
bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNm
b3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWw6CisgICAgICAgICogY29tcG9zaXRp
bmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0
aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhl
ZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90
IHRyaWdnZXJlZC4gRXhwZWN0YXRpb24gaXMgdW5jaGFuZ2VkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBVcGRh
dGVkIGFjY29yZGluZyB0byB0aGUgY2hhbmdlIG9mIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
LgorCiAyMDEyLTEyLTAzICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcgb24gQXBwbGUgV2luZG93cyBwb3J0LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29t
cG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKaW5k
ZXggNzllNDI2MThmNWQ1NDIyZTkwMzVlMzVhNTAyOWEwMDYyNzQ3ZjExZC4uZmJiMTc1ZmQ2ZmVj
OGE3YjI4NjVkZTRiZjIwZmQxMWNhZTk2MTc2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRv
d24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCkBAIC0zLDI3ICszLDI1IEBACiA8
aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsKLSAgcG9zaXRpb246IGFic29sdXRl
OwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxMHB4
OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAgei1pbmRl
eDogMTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgei1pbmRleDog
MTsKKyAgICBsZWZ0OiAxMHB4OwogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNj
YWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsK
LSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0g
ICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCh0cnVlKTsKLSAgfQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwor
fQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9Indp
ZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHlsZT0id2lkdGg6MjAwMHB4O2hl
aWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48
YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rpdj4KIDwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3Jv
bGwuaHRtbAppbmRleCA0NTJkMWRiMzAxMDc2Y2RkZjI2MjZhZjM0OGRlOTEwY2YxYmViNDI1Li44
YWFmYjIyMGMwNjM1MDk4ZWE4YmU4MmYwNzJmOWRkNmIzZDI3YThhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUtc2Nyb2xsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sCkBAIC0z
LDI5ICszLDI3IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsKLSAgcG9z
aXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICBsZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBm
aXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKLSAgLXdlYmtpdC10cmFuc2Zvcm06
dHJhbnNsYXRlWigwKTsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgei1pbmRleDogMTsKKyAg
ICBsZWZ0OiAxMHB4OworICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7CiB9CiA8
L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5z
ZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgfQotICAgIHdpbmRvdy5zY3JvbGxUbygx
MDAsMTAwKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKLSAgfQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKK30K
K3dpbmRvdy5zY3JvbGxUbygxMDAsMTAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBz
dHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5v
LXotaW5kZXgiPlRoaXMgdGVzdCBzaG91bGQgbm90IGhpdCBhbiBhc3NlcnRpb24gaW4gUmVuZGVy
R2VvbWV0cnlNYXAgaW4gZGVidWcgYnVpbGRzPC9kaXY+PGJyPgogPGRpdiBjbGFzcz0iZml4ZWQt
d2l0aC16LWluZGV4Ij5UaGlzIHRlc3Qgc2hvdWxkIG5vdCBoaXQgYW4gYXNzZXJ0aW9uIGluIFJl
bmRlckdlb21ldHJ5TWFwIGluIGRlYnVnIGJ1aWxkczwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9z
aXRlZC1wYWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAppbmRleCBmYzYzNjUyMGY5
NDcxNjg2MzlmZjk1ZDkxNjEyMmYzNzAxNjc5ZGEwLi42ZjJmNzIyNTZjZTg0Y2MzM2NjOWFhMGIy
ZTBkZjMxNDQyZGFlMTQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUuaHRtbApAQCAtMywyNyArMywyNSBAQAogPGhlYWQ+CiA8c3R5bGU+CiAuZml4ZWQt
bm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMTBweDsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBweDsKIH0KIC5maXhlZC13aXRoLXotaW5k
ZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6IDE7Ci0gIGxlZnQ6IDEwcHg7Cisg
ICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAgbGVmdDogMTBweDsKIH0K
IDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93
LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVD
b21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwotICB9CitpZiAod2lu
ZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxl
Q29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOworfQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJv
ZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+
Cis8Ym9keSBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9
ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRo
LXotaW5kZXgiPlRFU1Q8L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Ut
c2NhbGUtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKaW5kZXggYzVh
ZDQ2YzlhNmQ4ZjQzYjQ0MmE5Njc2MGVkZGRmOTZhODkzNWM4Yy4uOWY0NmJkYTQ5YWQ0OWJkNDg4
ZTA0ZjAxNGRhMGRmY2ZkZmY3NjM5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1k
b3duLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9z
aXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKQEAgLTMsMjggKzMs
MjggQEAKIDxoZWFkPgogPHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxl
ZnQ6IDEwcHg7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwot
ICB6LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6
LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24o
dHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAs
IDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRy
dWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7
Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRy
dWUpOwogCitmdW5jdGlvbiB0ZXN0KCkgewogICAgIHZhciBkID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ZyYW1lJykuY29udGVudERvY3VtZW50Lm9wZW4oKTsKICAgICBkLndyaXRlKCI8ZGl2
IHN0eWxlPSdwb3NpdGlvbjpmaXhlZDsgei1pbmRleDogMTsgbGVmdDsgMTBweDsnPlRFU1Q8L2Rp
dj4iKTsKICAgICBkLmNsb3NlKCk7Ci0gIH0KK30KIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkg
b25sb2FkPSJ0ZXN0KCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUu
aHRtbAppbmRleCBlNzliOWYyYWViMDljYmM3YTI5ZTkwMTQxOWQyMGMwNzU3MmQxNWRmLi4yOWE4
YzNhMjFkNTAwZjUxMzFkZDhmNGNmYzZjYjg5ZmFlM2Y0ODY1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRl
ZC1wYWdlLXNjYWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkv
Zml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCkBAIC0zLDI4
ICszLDI4IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsKLSAgcG9zaXRp
b246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICBsZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBmaXhl
ZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogZml4ZWQ7Cisg
ICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OwogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0g
IGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0
aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwg
MCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24o
dHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7
Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRy
dWUpOwogCitmdW5jdGlvbiB0ZXN0KCkgewogICAgIHZhciBkID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ZyYW1lJykuY29udGVudERvY3VtZW50Lm9wZW4oKTsKICAgICBkLndyaXRlKCI8ZGl2
IHN0eWxlPSdwb3NpdGlvbjpmaXhlZDsgei1pbmRleDogMTsgbGVmdDsgMTBweDsnPlRFU1Q8L2Rp
dj4iKTsKICAgICBkLmNsb3NlKCk7Ci0gIH0KK30KIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkg
b25sb2FkPSJ0ZXN0KCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS1kb3duLmh0bWwKaW5kZXggNmMxN2Y5NmVlMDgwZTdhMzNjNzNjNTA4YTQ0Zjcx
MzNhOWU4OGZmNC4uMTUwYTFhMjMyMzU4NGZjMGUzOGZjMzFlZmE1OWJmNjM2OTAwMWNhNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24t
dHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0
ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKQEAgLTMsMjkgKzMsMjcgQEAKIDxoZWFkPgogPHN0eWxl
PgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6IDEw
cHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CisgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKIH0KIC5maXhlZC13aXRo
LXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6IDE7Ci0gIGxlZnQ6IDEw
cHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7
CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAgbGVmdDogMTBweDsK
KyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOwog
fQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJs
ZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgfQoraWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVu
YWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOworfQoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9oZWFk
PgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAw
MHB4OyI+Cis8Ym9keSBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYg
Y2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhl
ZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2Zp
eGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAppbmRleCBm
OWEwYzM3Mzg3M2Y5NWU0ZjJhNWM3N2ZmZDEzZDhmNDZlYmUyYzZkLi41N2Y3MmUzZDE5MzI3ODI3
NDliMDZjNTA0MDU5MGU2MjJiODM2Y2Y4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9z
aXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCkBAIC0zLDI5ICszLDI3
IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsKLSAgcG9zaXRpb246IGFi
c29sdXRlOwotICBsZWZ0OiAxMHB4OwotICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgx
MHB4KSByb3RhdGUoMjBkZWcpOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAx
MHB4OworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRl
Zyk7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWlu
ZGV4OiAxOwotICBsZWZ0OiAxMHB4OwotICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgx
MHB4KSByb3RhdGUoMjBkZWcpOworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAx
OworICAgIGxlZnQ6IDEwcHg7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBw
eCkgcm90YXRlKDIwZGVnKTsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2Fs
ZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0g
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwotICB9CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwor
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOworfQoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwv
c2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIw
MDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoy
MDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48YnI+CiA8
ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rpdj4KIDwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0
aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1Mzc2NjU0ODI5ZGNiYmNkOWRmOGQyYmUyYjJjMDE2MTA2
M2U2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNjMgQEAKK05vdCBzY2FsZWQ6CisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4
NS4wMCAxMDE2LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAo
Ym91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAgICAgKGNoaWxkcmVuIDIKKyAgICAgICAgKEdyYXBo
aWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gNjAwLjAwIDAuMDApCisgICAgICAgICAgKGJv
dW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAg
ICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisg
ICkKKykKK1NjYWxlPTAuNToKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNDAwLjAwIDUwOC4w
MCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGFuY2hvciAwLjAw
IDAuMDApCisgICAgICAoYm91bmRzIDgwMC4wMCAxMDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBb
MC41MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMC41MCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4w
MCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAoY2hpbGRyZW4gNAorICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDEwMDguMDApCisgICAg
ICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NM
YXllcgorICAgICAgICAgIChwb3NpdGlvbiAxMDAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5k
cyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
ICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAw
KQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAx
MC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorU2NhbGU9MS41
OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyAxMjcyLjAwIDE1MjQuMDApCisgIChjaGlsZHJl
biAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChhbmNob3IgMC4wMCAwLjAwKQorICAgICAg
KGJvdW5kcyA4NDguMDAgMTAxNi4wMCkKKyAgICAgICh0cmFuc2Zvcm0gWzEuNTAgMC4wMCAwLjAw
IDAuMDBdIFswLjAwIDEuNTAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAg
MC4wMCAwLjAwIDEuMDBdKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICApCisg
ICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5odG1sIGIvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZp
ZXctc2NhbGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYzM2M5ZTkyNDE3YzYwMDdhZWMxOTk5YzEyM2Zk
MmFmNTVmNTcwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5odG1sCkBAIC0w
LDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5m
aXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdo
dDogMTBweDsKK30KKzwvc3R5bGU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
K2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsK
KyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0Nv
bnRleHQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisKKyAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5l
clRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIikuaW5uZXJU
ZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKwor
ICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7
CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWREb3duIikuaW5uZXJUZXh0ID0gaW50ZXJu
YWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWREb3duIikuaW5uZXJU
ZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKwor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFBhZ2VTY2FsZUZhY3RvcigxLjUsIDAs
IDApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWRVcCIpLmlubmVyVGV4
dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxl
ZFVwIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRv
Y3VtZW50KTsKKworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgfSwgMCk7CisgICAgICAgIH0sIDApOworICAgIH0sIGZhbHNlKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4KKyAg
ICBOb3Qgc2NhbGVkOgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+CisgICAgPHByZSBp
ZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJlPgorICAgIFNjYWxlPTAuNToKKyAg
ICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWREb3duIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZERvd24iPjwvcHJlPgorICAgIFNjYWxlPTEuNToK
KyAgICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWRVcCI+PC9wcmU+CisgICAgPHByZSBpZD0ibWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRVcCI+PC9wcmU+Cis8L2Rpdj4KKworPCEtLSBO
byBsYXllciBpbiBhbnkgY2FzZS4gLS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDog
LTEwMHB4Ij48L2Rpdj4KKworPCEtLSBIYXMgY29tcG9zaXRlZCBsYXllciB3aGVuIHNjYWxlZCBk
b3duOyBubyBsYXllciB3aGVuIG5vdCBzY2FsZWQgb3Igc2NhbGVkIHVwLiAtLT4KKzxkaXYgY2xh
c3M9ImZpeGVkIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxl
ZnQ6IDEwMDBweCI+PC9kaXY+CisKKzwhLS0gSGFzIGNvbXBvc2l0ZWQgbGF5ZXIgd2hlbiBub3Qg
c2NhbGVkIGFuZCBzY2FsZWQgZG93bjsgbm8gbGF5ZXIgc2NhbGVkIHVwLiAtLT4KKzxkaXYgY2xh
c3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDYwMHB4Ij48L2Rpdj4KKworPCEtLSBB
bHdheXMgaGFzIGNvbXBvc2l0ZWQgbGF5ZXIuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxl
PSJ0b3A6IDBweDsgbGVmdDogMHB4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXcuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0
aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKaW5kZXggYzJmNmU0OTIwMzAzZDE2
OGUzYTBlMTBiMzY2MDM3OGUwMDlmOWVkYi4uNTI2NzE4YWJkMDQzMzk1MjcwYjVkNzBkOGI2ZDIz
ZTA3NmE5M2Q1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1s
CkBAIC0yLDQwICsyLDQyIEBACiAKIDxodG1sPgogPGhlYWQ+Ci0gIDxzdHlsZT4KLSAgICAuZml4
ZWQgewotICAgICAgcG9zaXRpb246IGZpeGVkOwotICAgICAgd2lkdGg6IDEwcHg7Ci0gICAgICBo
ZWlnaHQ6IDEwcHg7Ci0gICAgfQotICA8L3N0eWxlPgotCi0gIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUp
OwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLQotICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVydHJlZSIpLmlubmVy
VGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKLSAgICAg
IH0sIGZhbHNlKTsKLSAgICB9Ci0gIDwvc2NyaXB0PgorPHN0eWxlPgorLmZpeGVkIHsKKyAgICBw
b3NpdGlvbjogZml4ZWQ7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4OworfQor
PC9zdHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxheWVyVHJlZSIpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0
KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5tYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVudCk7CisgICAgfSwgZmFsc2UpOworfQorPC9zY3JpcHQ+
CiA8L2hlYWQ+CiAKIDxib2R5PgotICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+Ci0gICAg
PHByZSBpZD0ibGF5ZXJ0cmVlIj48L3ByZT4KLSAgPC9kaXY+Ci0KLSAgPCEtLSBOZWl0aGVyIG9m
IHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgZ2V0cyBpdHMgb3duIGxheWVyLiAtLT4KLSAgPGRpdiBj
bGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMSI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9ImZp
eGVkIiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogLTEwMHB4Ij48L2Rpdj4KLSAgPGRpdiBjbGFz
cz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAwcHg7IGxlZnQ6IDEwMDBweCI+PC9k
aXY+Ci0KLSAgPCEtLSBUaGlzIGVsZW1lbnQgZ2V0cyBpdHMgb3duIGxheWVyIGJlY2F1c2UgaXQg
aW50ZXJzZWN0cyB3aXRoIHRoZSB2aWV3cG9ydC4gLS0+Ci0gIDxkaXYgY2xhc3M9ImZpeGVkIiBz
dHlsZT0iei1pbmRleDogLTE7IHRvcDogMHB4OyBsZWZ0OiAwcHgiPjwvZGl2PgorPGRpdiBzdHls
ZT0iaGVpZ2h0OiAxMDAwcHgiPgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+CisgICAg
PHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJlPgorPC9kaXY+CisKKzwh
LS0gTmVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIGdldHMgaXRzIG93biBsYXllci4g
LS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0xIj48L2Rpdj4KKzxkaXYg
Y2xhc3M9ImZpeGVkIiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogLTEwMHB4Ij48L2Rpdj4KKzxk
aXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogMHB4OyBsZWZ0OiAxMDAw
cHgiPjwvZGl2PgorCis8IS0tIFRoaXMgZWxlbWVudCBnZXRzIGl0cyBvd24gbGF5ZXIgYmVjYXVz
ZSBpdCBpbnRlcnNlY3RzIHdpdGggdGhlIHZpZXdwb3J0LiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVk
IiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogMHB4OyBsZWZ0OiAwcHgiPjwvZGl2PgogPC9ib2R5
PgogPC9odG1sPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA0MTQ0NjM0MDhlYmE2NGNkNmFiMjA5ODFiZWIxNTFjY2UzNmUyNjAwLi45
MzZjNWQ4YjE3NDgwNDRlYmY1NmI0M2Y3OWY3NWMzNzlkNjg0OTFhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM1NzcsOCArMzU3Nywx
MCBAQCBjcmJ1Zy5jb20vMTMyODk4IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9jbG9zZS5odG1sIFsgRmFpbHVyZSBQYQogIyBUaW1pbmcgb3V0IG9uIHNvbWUgV2luZG93
cyBib3RzCiB3ZWJraXQub3JnL2IvODk1MTAgWyBXaW4gXSBnYW1lcGFkL2dhbWVwYWQtcG9sbGlu
Zy1hY2Nlc3MuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi85NjgzOSBjb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdl
LXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQotd2Via2l0Lm9yZy9iLzk2ODM5
IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21l
dHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk2ODM5IHBsYXRmb3JtL2Nocm9taXVt
L3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFu
c2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi85NjgzOSBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFu
c2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzk2ODM5IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVj
b21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1w
YWdlLXNjYWxlLWRvd24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg5
NzAyIGNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzg5NzAyIHBsYXRmb3JtL2Nocm9taXVt
L3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy9zY2FsaW5nL3RpbGVkLWxheWVyLXJlY3Vyc2lv
bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxp
bmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4MGNm
MWNiYWE4ZGQxY2ViMWY5ZGIxMjI1YzhmMzExMTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2EwMjBl
YzRmMWJiYjE4YmQyMGUyYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJl
ZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xsaW5n
IG5vZGUKICAgKHZpZXdwb3J0IHJlY3QgMCAwIDgwMCA2MDApCiAgIChjb250ZW50cyBzaXplIDgw
MCA2MDApCi0gIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVw
YWludCBvYmplY3RzLCApCisgIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFz
IHNsb3cgcmVwYWludCBvYmplY3RzKQogKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggODU3NGM2ODE1YzA0ZWE5OGY3N2YwNjFkZmY4YzY1MzhmZWI2ZDFmNC4uNDdi
ZDcyZjg5YTVkOWZkYzQxN2NhN2IwNzZhZjI2MTMzM2YwYWRjYSAxMDA2NDQKLS0tIGEvQ2hhbmdl
TG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTAzICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1
ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiBT
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTEyLTAzICBBbGV4aXMgTWVu
YXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIENTUzMgYmFj
a2dyb3VuZC1wb3NpdGlvbiBvZmZzZXRzIGJ5IGRlZmF1bHQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177506</attachid>
            <date>2012-12-04 10:15:33 -0800</date>
            <delta_ts>2012-12-04 13:19:06 -0800</delta_ts>
            <desc>Rebase again</desc>
            <filename>bug-102543-20121204181258.patch</filename>
            <type>text/plain</type>
            <size>41382</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU4ZTBjZWU3NTBjNGNl
NzEyNWQ4OTNjZmRlMGEyYjM5MGQyNzYxNC4uYmY3NjI2ZGM1NGZhNzRlNzVjYzY4ODk5ZjMzOGM0
MWQ5Y2ZjMWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMi0wNCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzb3duT3BlbmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDhkZDU2YWNlNTU5ZTliYjUyYTU2ZDQ3NGVmMjY1NWVmZTc2MWI3MTMuLjdi
Y2YzZmVlNmIyZmM4YmRkZDBmYjhhNGMzMmM4MzM4ZGRhNmI5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC03NjEsNiArNzYxLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyNHNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9u
c0V2CiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZUVp
CiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheUVkCitf
X1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRFdgogX19a
TjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkRWIKIF9fWk43
V2ViQ29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc0V2CiBfX1pO
N1dlYkNvcmU0UGFnZTM2c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zRWIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IDlkNTM1OTc2MTJhMmEwOTUxMGVmYmJmNjU1ZTVhYWQ4ZGFiNWUz
OTUuLjM2ZDY0N2FlYzQ0ODE0NmZjYTc2YTY5MGEwYjM0MWQ1OWU1YWM4N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMjU1LDYgKzI1NSwxNyBAQCBTdHJpbmcgUGFnZTo6c2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBQYWdlOjptYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCit7CisgICAgaWYgKERvY3VtZW50KiBkb2N1
bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+dXBkYXRl
TGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgcmV0dXJuIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpOwor
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01vZGVJbmZvIHsKICAgICBj
b25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmlu
ZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0ZmEzNmIwMGMuLjZjMzk1NTBmYWUw
NWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xOTYsNiAr
MTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAgICBTdHJpbmcgc2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJu
IG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9ncmVzcygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBjZDk0
MzJjMmE4MmQ4ZTAxODAwNzQ3YzRiMmZkMDg3NGUwOWViMjYyLi5kZTFlMWU1Nzg2NDI2ZTNmZmYz
ZTY1OWM5ZjYxNmFiZTMxMDc3NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NSwzNyArNjUsMzIgQEAg
UGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNy
ZWF0ZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsaW5nQ29vcmRp
bmF0b3IocGFnZSkpOwogfQogCi1zdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQo
aW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgbWF4VmFsdWUsIGludCBzY3JvbGxPcmlnaW4sIGZsb2F0
IGRyYWdGYWN0b3IpCitzdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQoaW50IHZp
c2libGVDb250ZW50U2l6ZSwgaW50IGNvbnRlbnRzU2l6ZSwgaW50IHNjcm9sbFBvc2l0aW9uLCBp
bnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29sIGZpeGVkRWxlbWVu
dHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgaWYgKCFtYXhWYWx1ZSkKKyAgICBpbnQg
bWF4VmFsdWUgPSBjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemU7CisgICAgaWYgKG1h
eFZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFzY3JvbGxPcmlnaW4p
IHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgMCkKLSAgICAgICAgICAgIHNjcm9sbFBv
c2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24gPiBtYXhWYWx1ZSkK
KyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDw9IDApCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3Jv
bGxQb3NpdGlvbiA9IG1heFZhbHVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChzY3JvbGxQ
b3NpdGlvbiA+IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7Ci0gICAgICAgIGVs
c2UgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQorICAgICAgICBpZiAoc2Nyb2xsUG9z
aXRpb24gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoc2Nyb2xsUG9z
aXRpb24gPCAtbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IC1tYXhWYWx1
ZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICogZHJhZ0ZhY3RvcjsK
KworICAgIGZsb2F0IGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0Zy
YW1lID8gMSA6IChjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemUgKiBmcmFtZVNjYWxl
RmFjdG9yKSAvIG1heFZhbHVlOworICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAqIGRyYWdGYWN0
b3IgLyBmcmFtZVNjYWxlRmFjdG9yOwogfQogCiBJbnRTaXplIHNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24oY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXpl
JiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9vbCBmaXhlZEVs
ZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIEludFNpemUgbWF4T2Zmc2V0KGNv
bnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRz
U2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0gICAgCi0gICAg
RmxvYXRTaXplIGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1l
ID8gRmxvYXRTaXplKDEsIDEpIDogRmxvYXRTaXplKAotICAgICAgICAoY29udGVudHNTaXplLndp
ZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAqIGZyYW1lU2NhbGVGYWN0b3IpIC8g
bWF4T2Zmc2V0LndpZHRoKCksCi0gICAgICAgIChjb250ZW50c1NpemUuaGVpZ2h0KCkgLSB2aXNp
YmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heE9mZnNldC5o
ZWlnaHQoKSk7Ci0KLSAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQoc2Nyb2xs
UG9zaXRpb24ueCgpLCBtYXhPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT3JpZ2luLngoKSwgZHJhZ0Zh
Y3Rvci53aWR0aCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHkgPSBmaXhlZFBvc2l0
aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLnkoKSwgbWF4T2Zmc2V0LmhlaWdodCgpLCBz
Y3JvbGxPcmlnaW4ueSgpLCBkcmFnRmFjdG9yLmhlaWdodCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7
Ci0KKyAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJsZUNvbnRlbnRS
ZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBzY3JvbGxQb3NpdGlvbi54KCksIHNj
cm9sbE9yaWdpbi54KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxh
dGl2ZVRvRnJhbWUpOworICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9mZnNldCh2aXNp
YmxlQ29udGVudFJlY3QuaGVpZ2h0KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSwgc2Nyb2xsUG9z
aXRpb24ueSgpLCBzY3JvbGxPcmlnaW4ueSgpLCBmcmFtZVNjYWxlRmFjdG9yLCBmaXhlZEVsZW1l
bnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKICAgICByZXR1cm4gSW50U2l6ZSh4LCB5KTsKIH0K
IApAQCAtMzQzLDggKzMzOCw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2li
bGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAgICAgICAgIFJl
bmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsKICAgICAgICAgaWYg
KCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkgfHwgIXZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRCb3hN
b2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVsT2JqZWN0LT5s
YXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVy
Qm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxheWVyKCk7CisgICAg
ICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmICFsYXllci0+aXNGaXhlZFBvc2l0aW9u
Tm90VG9CZVBhaW50ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0zOTgsNCArMzkzLDI5IEBAIFN0cmluZyBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgcmVhc29ucykKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIpOworICAgIGlmIChyZWFzb25zICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIik7CisgICAgaWYg
KHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0
aW5nIGZpeGVkIGxheWVycywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICIpOworICAgIGlmIChyZWFzb25zICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50LCAiKTsKKworICAgIGlmIChzdHJpbmdCdWls
ZGVyLmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLnJlc2l6ZShzdHJpbmdCdWlsZGVy
Lmxlbmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKK30K
KworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4NjUwZWFiNDAyNWRlM2RiZDkyNmQwYzZmOTg1
MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5NWNlZjc4OWE4YjRlOGU0ODBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVy
SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFw
aGljc0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIG1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKTsKKyAgICBTdHJp
bmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsKKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1MzNhZTZhZmUzNTk0NzM5YjZlODZkN2M1NThk
MzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4NWRlMzYzYWE2ODgzNjRlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTggKzIyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVu
dCkgY29uCiAKICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAg
dHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIjsKLSAgICAgICAgaWYg
KG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgICAgICB0cyA8PCAiRm9y
Y2VkIG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dS
ZXBhaW50T2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgc2xvdyByZXBhaW50IG9iamVj
dHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQotICAgICAgICAgICAgdHMgPDwgIkhh
cyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBs
YXllcnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVj
dHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiOwot
ICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
ICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKLSAgICAgICAgICAgIHRz
IDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAgICAgIHRzIDw8ICIpXG4iOworICAgICAgICB0
cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiIDw8IFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIDw8ICIpXG4iOwogICAgIH0KIAogICAg
IGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IEludFBvaW50KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVmNWJhMzI2YTgzZDQyYjM3MDY1
NTAzNjBjZTE3ZDQ1Y2E4ZDM1N2EuLjc3N2EyZTZhMDc1MGZlMzI4ZTIxMmU1NjMxODViNWEwY2Qy
ZGY3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzEx
OSw2ICszMTE5LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFN1cHByZXNzUGFpbnRpbmdM
YXllcihSZW5kZXJMYXllciogbGF5ZXIpCiB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5n
SW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgIGlmIChpc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFpbnRlZCgpKQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgLy8g
VGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29t
cG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3
ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4g
dGhpcyBjYXNlLgpAQCAtNDczMiw2ICs0NzM1LDE5IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxh
eWVyOjpsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmFja2lu
ZyA/IG1fYmFja2luZy0+bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSA6IDA7CiB9CisKK2Jvb2wgUmVu
ZGVyTGF5ZXI6OmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkgY29uc3QKK3sKKyAgICBT
ZXR0aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOwor
ICAgIGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JG
aXhlZFBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4gYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgZm9yIGZpeGVkIHBvc2l0aW9uIGlzIGVuYWJsZWQsIGFsbCBmaXhlZCBwb3NpdGlv
biBsYXllcnMgc3RhcnRpbmcgYSBzdGFja2luZyBjb250ZXh0CisgICAgICAgIC8vIGFuZCBub3Qg
dW5kZXIgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHNob3VsZCBiZSBjb21wb3NpdGVkLCBvciBpcyBu
b3QgdG8gYmUgcGFpbnRlZCAoZS5nLiBvdXQtb2YtdmlldykuCisgICAgICAgIGlmICghaXNDb21w
b3NpdGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLT5w
b3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbV9yZW5kZXJlci0+Y29udGFpbmVyKCkgPT0g
bV9yZW5kZXJlci0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIGJvb2wgUmVuZGVyTGF5ZXI6OnBhaW50c1dp
dGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAwYzBjZDc5ODIxYmFlOTJjODk1OTk0YjBj
NzdkMzMwMTFiZWFhZjY5Li5hMmFmNTZhY2VkZWJkOTQ2YjhlOTM4ZjZkOWRjMzMyNmZhYzBlZmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjU1LDYgKzY1NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGljYWxT
Y3JvbGxiYXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Ny
b2xsQ29ybmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHVzZXNDb21wb3NpdGVkU2Nyb2xs
aW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFp
bnRlZCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIGlzQ29tcG9zaXRlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNDb21wb3NpdGVkTWFzaygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3
NzAuLjNiY2NjOTBhMzBkN2QzZWM0M2Y3NGE0M2RhN2MyZTJjOTJkOTBiZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0x
OTc2LDYgKzE5NzYsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21w
b3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgIGlmIChGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50
UmVjdCB2aWV3Qm91bmRzID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICAg
ICAgSW50UmVjdCBsYXllckJvdW5kcyA9IGNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIs
IHJvb3RSZW5kZXJMYXllcigpKTsKKyAgICAgICAgbGF5ZXJCb3VuZHMuc2NhbGUocGFnZVNjYWxl
RmFjdG9yKCkpOwogICAgICAgICBpZiAoIXZpZXdCb3VuZHMuaW50ZXJzZWN0cyhsYXllckJvdW5k
cykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDk0YTNiMDUyZWMwY2ZiOWM5NTM5NzM2Yjg1NmZhZmU0NzNkZmQx
NGEuLmY1MmVhOTk2ZDAyZmYxYTg4Mjk4Y2Q1NDAzYjk1M2M2MGM3ZDMxYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NjUsNiArMTQ2NSwyMCBAQCBTdHJpbmcgSW50
ZXJuYWxzOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNl
cHRpb25Db2RlJiBlYwogICAgIHJldHVybiBwYWdlLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQo
KTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9j
dW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworCisgICAgcmV0dXJuIHBhZ2UtPm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNU
ZXh0KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAg
aWYgKCFkb2N1bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjk5ZjNl
M2FiMDBiYjQxYzM2NzNhYTZhMjE2YzU2YjkwYWU4ZDliNC4uNGIxMzYxNDhkNzg3NmMxNmEyMmI2
M2ExY2QwNGM4NGE2ZDA0Mjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0y
MDksNiArMjA5LDggQEAgcHVibGljOgogICAgIFN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoRG9j
dW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAorICAgIFN0cmlu
ZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKKwogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1bWVu
dCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgYWxsb3dSb3VuZGluZ0hhY2tz
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNmRjNzVjZDAx
YWU5YmU5YmZlOTFjN2EwZGI4OTk0ZTRjZDU2YThhYy4uYTkxOWZmMjFjMDdlNGNkYjAxMjlkMmEw
Y2I0Zjc4MTJjODY5MmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
MTY2LDYgKzE2Niw3IEBACiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVu
dCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChp
biBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIERPTVN0cmlu
ZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChpbiBE
b2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgppbmRleCA4ZDA0ZTYwNzljMDVlOTc4MTE5OWQyNTMzZTA2MTBmOTBmZGU5YjU4Li5j
NzI3NTUxM2Y5YWEwOGQxYjA2MjNmYzQ1ZmY0MGFiZmJhMDkzNzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKQEAgLTMxLDYgKzMxLDcgQEAgX1pON1dlYkNvcmU0UGFnZTEzc2V0UGFnaW5hdGlv
bkVSS05TXzEwUGFnaW5hdGlvbkU7CiBfWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0
b3JFZlJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFj
dG9yRWY7CiBfWk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdjsKK19a
TjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0RXY7CiBfWk43
V2ViQ29yZTRQYWdlMTZzZXRDYW5TdGFydE1lZGlhRWI7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pT
QzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50UmVjdEU7CiBf
Wk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RF
UE5TXzEwU2hhZG93Um9vdEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzUzMDgxNjJiZTZlMzMyMTVmYjUwMWExN2JiZjRk
MzM5ZWQ3YWVmZS4uNmUxODE0ZGUwOGFmMjZiNjk5YzU4M2FiNzJkZDgzNTczNjE3NDY3NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEyLTAzICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpo
dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2li
bGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4
ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkL21vZGlmaWVkIHRlc3QgdG8gZW5zdXJlIHNsb3ctc2Nyb2xsaW5n
IGlzIG5vdCB0cmlnZ2VyZWQgYnkgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBlbGVtZW50
cywKKyAgICAgICAgYW5kIGVuc3VyZSBvdXQtb2YtdmlldyBjaGVja2luZyBpcyBjb3JyZWN0IHdo
ZW4gcGFnZSBpcyBzY2FsZWQuCisKKyAgICAgICAgQlRXLCBmaXhlZCBzb21lIHRlc3RzIHRoYXQg
c2V0IGVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbiBpbiBvbmxvYWQgaGFuZGxlciB3
aGljaCBtYXkgbm90IHRha2UgZWZmZWN0IGJlY2F1c2UgaXQgaXMgdG9vIGxhdGUuCisgICAgICAg
IExlYXZlIHRoZSBpbWFnZSBtaXNtYXRjaGVzIHRvIGJ1ZyA5NjgzOS4KKworICAgICAgICAqIGNv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1k
b3duLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24t
Y29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sOgorICAg
ICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbDoKKyAgICAg
ICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9z
aXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRy
eS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWw6Cisg
ICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9m
LXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9u
LW91dC1vZi12aWV3Lmh0bWw6IEVuc3VyZSBzbG93LXNjcm9sbGluZyBpcyBub3QgdHJpZ2dlcmVk
LiBFeHBlY3RhdGlvbiBpcyB1bmNoYW5nZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgYWNjb3Jk
aW5nIHRvIHRoZSBjaGFuZ2Ugb2YgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMuCisKIDIwMTIt
MTItMDQgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgbWF0aG1sIHJlYmFzZWxpbmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5o
dG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29t
cG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRleCA3OWU0MjYxOGY1ZDU0MjJlOTAzNWUz
NWE1MDI5YTAwNjI3NDdmMTFkLi5mYmIxNzVmZDZmZWM4YTdiMjg2NWRlNGJmMjBmZDExY2FlOTYx
NzZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1w
b3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS1kb3duLmh0bWwKQEAgLTMsMjcgKzMsMjUgQEAKIDxoZWFkPgogPHN0eWxlPgogLmZpeGVkLW5v
LXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4
IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4OworICAg
IHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7CiB9CiA8
L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5z
ZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwotICB9CitpZiAod2lu
ZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxl
Q29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7
Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFz
cz0iZml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdp
dGgtei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxl
LXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9z
aXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sCmluZGV4IDQ1MmQxZGIzMDEw
NzZjZGRmMjYyNmFmMzQ4ZGU5MTBjZjFiZWI0MjUuLjhhYWZiMjIwYzA2MzUwOThlYThiZTgyZjA3
MmY5ZGQ2YjNkMjdhOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21l
dHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwKQEAgLTMsMjkgKzMsMjcgQEAKIDxoZWFkPgogPHN0
eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6
IDEwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9CiAuZml4
ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBs
ZWZ0OiAxMHB4OwotICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOworICAgIHBvc2l0
aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7CisgICAgLXdlYmtp
dC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5j
dGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24o
dHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAw
KTsKLSAgICB9Ci0gICAgd2luZG93LnNjcm9sbFRvKDEwMCwxMDApOwotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICB9CitpZiAod2lu
ZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxl
Q29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOworfQord2luZG93LnNjcm9sbFRvKDEwMCwxMDAp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6
MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0
OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VGhpcyB0ZXN0IHNob3Vs
ZCBub3QgaGl0IGFuIGFzc2VydGlvbiBpbiBSZW5kZXJHZW9tZXRyeU1hcCBpbiBkZWJ1ZyBidWls
ZHM8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRoaXMgdGVzdCBz
aG91bGQgbm90IGhpdCBhbiBhc3NlcnRpb24gaW4gUmVuZGVyR2VvbWV0cnlNYXAgaW4gZGVidWcg
YnVpbGRzPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS5odG1sCmluZGV4IGZjNjM2NTIwZjk0NzE2ODYzOWZmOTVkOTE2MTIyZjM3MDE2
NzlkYTAuLjZmMmY3MjI1NmNlODRjYzMzY2M5YWEwYjJlMGRmMzE0NDJkYWUxNDAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21l
dHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCkBAIC0zLDI3ICsz
LDI1IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsKLSAgcG9zaXRpb246
IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBs
ZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsK
LSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAg
ei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OwogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1
bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlv
bih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAs
IDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQodHJ1ZSk7Ci0gIH0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRp
b24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwg
MCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHls
ZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAw
cHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VEVTVDwv
ZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwvZGl2PgogPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRl
ZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRleCBjNWFkNDZjOWE2ZDhmNDNiNDQyYTk2NzYwZWRk
ZGY5NmE4OTM1YzhjLi45ZjQ2YmRhNDlhZDQ5YmQ0ODhlMDRmMDE0ZGEwZGZjZmRmZjc2MzlhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1w
YWdlLXNjYWxlLWRvd24uaHRtbApAQCAtMywyOCArMywyOCBAQAogPGhlYWQ+CiA8c3R5bGU+CiAu
Zml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMTBweDsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBweDsKIH0KIC5maXhlZC13aXRo
LXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6IDE7Ci0gIGxlZnQ6IDEw
cHg7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAgbGVmdDogMTBw
eDsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVu
YWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFi
bGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFs
cy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKK30KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKK2Z1bmN0aW9uIHRlc3QoKSB7
CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUnKS5jb250ZW50RG9j
dW1lbnQub3BlbigpOwogICAgIGQud3JpdGUoIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmZpeGVkOyB6
LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVTVDwvZGl2PiIpOwogICAgIGQuY2xvc2UoKTsKLSAg
fQorfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InRlc3QoKTsiIHN0eWxlPSJ3
aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1z
Y2FsZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGU3OWI5ZjJhZWIwOWNi
YzdhMjllOTAxNDE5ZDIwYzA3NTcyZDE1ZGYuLjI5YThjM2EyMWQ1MDBmNTEzMWRkOGY0Y2ZjNmNi
ODlmYWUzZjQ4NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29t
cG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTMsMjggKzMsMjggQEAKIDxoZWFkPgogPHN0eWxl
PgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6IDEw
cHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9CiAuZml4ZWQt
d2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBsZWZ0
OiAxMHB4OworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6
IDEwcHg7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBp
ZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5z
ZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVu
YWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKK30KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKK2Z1bmN0aW9uIHRlc3QoKSB7
CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUnKS5jb250ZW50RG9j
dW1lbnQub3BlbigpOwogICAgIGQud3JpdGUoIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmZpeGVkOyB6
LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVTVDwvZGl2PiIpOwogICAgIGQuY2xvc2UoKTsKLSAg
fQorfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InRlc3QoKTsiIHN0eWxlPSJ3
aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS1kb3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRl
eCA2YzE3Zjk2ZWUwODBlN2EzM2M3M2M1MDhhNDRmNzEzM2E5ZTg4ZmY0Li4xNTBhMWEyMzIzNTg0
ZmMwZTM4ZmMzMWVmYTU5YmY2MzY5MDAxY2E1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdl
LXNjYWxlLWRvd24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbApA
QCAtMywyOSArMywyNyBAQAogPGhlYWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0g
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMTBweDsKLSAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgbGVmdDogMTBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4
KSByb3RhdGUoMjBkZWcpOwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBm
aXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKLSAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKKyAgICBwb3NpdGlvbjogZml4ZWQ7Cisg
ICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0
cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAg
ZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0
aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41
LCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOwotICB9CitpZiAod2luZG93LmludGVybmFscykgeworICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBv
c2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAu
NSwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7
IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0
aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+
VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwvZGl2
PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkv
Zml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGY5YTBjMzczODczZjk1ZTRmMmE1Yzc3ZmZk
MTNkOGY0NmViZTJjNmQuLjU3ZjcyZTNkMTkzMjc4Mjc0OWIwNmM1MDQwNTkwZTYyMmI4MzZjZjgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRl
ZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTMsMjkgKzMsMjcgQEAKIDxoZWFkPgogPHN0eWxlPgogLmZp
eGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7Ci0g
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CisgICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKIH0KIC5maXhlZC13aXRoLXotaW5k
ZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6IDE7Ci0gIGxlZnQ6IDEwcHg7Ci0g
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7CisgICAg
cG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAgbGVmdDogMTBweDsKKyAgICAt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOwogfQogPC9z
dHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBv
c2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gIH0KK2lmICh3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21w
b3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXRQ
YWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBv
bmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxi
b2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4
ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgtei1p
bmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVk
LXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUz
NzY2NTQ4MjlkY2JiY2Q5ZGY4ZDJiZTJiMmMwMTYxMDYzZTYxYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91
dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2MyBAQAorTm90IHNjYWxl
ZDoKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisgIChjaGlsZHJl
biAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisg
ICAgICAoY2hpbGRyZW4gMgorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3Np
dGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAg
ICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4w
MCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorU2NhbGU9MC41OgorKEdyYXBo
aWNzTGF5ZXIKKyAgKGJvdW5kcyA0MDAuMDAgNTA4LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChH
cmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgICAgIChib3VuZHMgODAw
LjAwIDEwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFswLjUwIDAuMDAgMC4wMCAwLjAwXSBbMC4w
MCAwLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAuMDAgMC4wMCAx
LjAwXSkKKyAgICAgIChjaGlsZHJlbiA0CisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAg
ICAgKHBvc2l0aW9uIDguMDAgMTAwOC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAw
KQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9u
IDEwMDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICAp
CisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDYwMC4wMCAwLjAw
KQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdy
YXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisg
ICAgICApCisgICAgKQorICApCispCitTY2FsZT0xLjU6CisoR3JhcGhpY3NMYXllcgorICAoYm91
bmRzIDEyNzIuMDAgMTUyNC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRzIDg0OC4wMCAxMDE2LjAwKQor
ICAgICAgKHRyYW5zZm9ybSBbMS41MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS41MCAwLjAwIDAu
MDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAo
Y2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAu
MDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24t
b3V0LW9mLXZpZXctc2NhbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNjMzZDdjZGRkOGUxMTgwMjQzMDQxYmEyNjJlODkwMTVhN2MzZWIzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmZpeGVkIHsKKyAgICBwb3NpdGlvbjogZml4
ZWQ7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4OworfQorPC9zdHlsZT4KKwor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYg
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAg
IGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZSIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRy
ZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgIGludGVybmFscy5zZXRQYWdl
U2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZVNjYWxlZERv
d24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29uc1NjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGFnZVNjYWxl
RmFjdG9yKDEuNSwgMCwgMCk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZVNjYWxl
ZFVwIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSwgMCk7CisgICAgfSwgZmFs
c2UpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBzdHlsZT0iaGVpZ2h0
OiAxMDAwcHgiPgorICAgIE5vdCBzY2FsZWQ6CisgICAgPHByZSBpZD0ibGF5ZXJUcmVlIj48L3By
ZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+CisgICAg
U2NhbGU9MC41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZERvd24iPjwvcHJlPgorICAg
IDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkRG93biI+PC9wcmU+Cisg
ICAgU2NhbGU9MS41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZFVwIj48L3ByZT4KKyAg
ICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZFVwIj48L3ByZT4KKzwv
ZGl2PgorCis8IS0tIE5vIGxheWVyIGluIGFueSBjYXNlLiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVk
IiBzdHlsZT0idG9wOiAtMTAwcHgiPjwvZGl2PgorCis8IS0tIEhhcyBjb21wb3NpdGVkIGxheWVy
IHdoZW4gc2NhbGVkIGRvd247IG5vIGxheWVyIHdoZW4gbm90IHNjYWxlZCBvciBzY2FsZWQgdXAu
IC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxl
PSJ0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KKworPCEtLSBIYXMgY29tcG9zaXRlZCBs
YXllciB3aGVuIG5vdCBzY2FsZWQgYW5kIHNjYWxlZCBkb3duOyBubyBsYXllciBzY2FsZWQgdXAu
IC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogNjAwcHgiPjwv
ZGl2PgorCis8IS0tIEFsd2F5cyBoYXMgY29tcG9zaXRlZCBsYXllci4gLS0+Cis8ZGl2IGNsYXNz
PSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0OiAwcHgiPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAppbmRleCBj
MmY2ZTQ5MjAzMDNkMTY4ZTNhMGUxMGIzNjYwMzc4ZTAwOWY5ZWRiLi41MjY3MThhYmQwNDMzOTUy
NzBiNWQ3MGQ4YjZkMjNlMDc2YTkzZDU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91
dC1vZi12aWV3Lmh0bWwKQEAgLTIsNDAgKzIsNDIgQEAKIAogPGh0bWw+CiA8aGVhZD4KLSAgPHN0
eWxlPgotICAgIC5maXhlZCB7Ci0gICAgICBwb3NpdGlvbjogZml4ZWQ7Ci0gICAgICB3aWR0aDog
MTBweDsKLSAgICAgIGhlaWdodDogMTBweDsKLSAgICB9Ci0gIDwvc3R5bGU+Ci0KLSAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVk
UG9zaXRpb24odHJ1ZSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5
ZXJ0cmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9j
dW1lbnQpOwotICAgICAgfSwgZmFsc2UpOwotICAgIH0KLSAgPC9zY3JpcHQ+Cis8c3R5bGU+Cisu
Zml4ZWQgeworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWln
aHQ6IDEwcHg7Cit9Cis8L3N0eWxlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5s
YXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJu
YWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICB9LCBmYWxzZSk7
Cit9Cis8L3NjcmlwdD4KIDwvaGVhZD4KIAogPGJvZHk+Ci0gIDxkaXYgc3R5bGU9ImhlaWdodDog
MTAwMHB4Ij4KLSAgICA8cHJlIGlkPSJsYXllcnRyZWUiPjwvcHJlPgotICA8L2Rpdj4KLQotICA8
IS0tIE5laXRoZXIgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBnZXRzIGl0cyBvd24gbGF5ZXIu
IC0tPgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0xIj48L2Rpdj4KLSAg
PGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAtMTAwcHgiPjwvZGl2
PgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0xOyB0b3A6IDBweDsgbGVm
dDogMTAwMHB4Ij48L2Rpdj4KLQotICA8IS0tIFRoaXMgZWxlbWVudCBnZXRzIGl0cyBvd24gbGF5
ZXIgYmVjYXVzZSBpdCBpbnRlcnNlY3RzIHdpdGggdGhlIHZpZXdwb3J0LiAtLT4KLSAgPGRpdiBj
bGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAwcHg7IGxlZnQ6IDBweCI+PC9k
aXY+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+CisgICAgPHByZSBpZD0ibGF5ZXJUcmVl
Ij48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+
Cis8L2Rpdj4KKworPCEtLSBOZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgZ2V0cyBp
dHMgb3duIGxheWVyLiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0iei1pbmRleDogLTEi
PjwvZGl2PgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAtMTAw
cHgiPjwvZGl2PgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAw
cHg7IGxlZnQ6IDEwMDBweCI+PC9kaXY+CisKKzwhLS0gVGhpcyBlbGVtZW50IGdldHMgaXRzIG93
biBsYXllciBiZWNhdXNlIGl0IGludGVyc2VjdHMgd2l0aCB0aGUgdmlld3BvcnQuIC0tPgorPGRp
diBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAwcHg7IGxlZnQ6IDBweCI+
PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDYzZTY4NTQyZGRjMDY4ZjU2OWNjOTg3OTQ5NDRk
M2VlYWVhYjZkMDEuLjZmOGJkMDRhNTU0NTU2OWJkM2NlODQzNzM3YjhjMmJkMzljODc4YjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MzU4Myw4ICszNTgzLDEwIEBAIGNyYnVnLmNvbS8xMzI4OTggaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwgWyBGYWlsdXJlIFBhCiAjIFRpbWluZyBvdXQg
b24gc29tZSBXaW5kb3dzIGJvdHMKIHdlYmtpdC5vcmcvYi84OTUxMCBbIFdpbiBdIGdhbWVwYWQv
Z2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9y
Zy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1j
b21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCi13ZWJr
aXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0
aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2Nh
bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvOTY4MzkgY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgcGxh
dGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmly
dHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9y
bS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvODk3MDIgY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNp
b24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvODk3MDIgcGxh
dGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQt
bGF5ZXItcmVjdXJzaW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJl
ZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQK
aW5kZXggYmU0MDgwY2YxY2JhYThkZDFjZWIxZjlkYjEyMjVjOGYzMTExNWI4My4uMzJlZjBjZTVj
Yzc1OWVmYmY3YTAyMGVjNGYxYmJiMThiZDIwZTJhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYg
QEAKIChTY3JvbGxpbmcgbm9kZQogICAodmlld3BvcnQgcmVjdCAwIDAgODAwIDYwMCkKICAgKGNv
bnRlbnRzIHNpemUgODAwIDYwMCkKLSAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNl
OiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICkKKyAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVh
ZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMpCiApCiAKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNWExMGQ5YmIxNjhjOTE1NTVjZWE4MDcwMzRhY2M2
N2FjNGI3MjhhLi5mNDIxNDlhMmRlZjUzMWM2N2IyZTYyY2I1NjRkZTFmMDAxY2QxMWRlIDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MTItMDMgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3Qo
KSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN5bWJvbC4K
KworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTIt
MDQgIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl1bQUNdIFVTRV9HUkFQSElDU19TVVJGQUNFIHNob3VsZCBiZSBlbmFi
bGVkIG9ubHkgaWYgWGNvbXBvc2l0ZSBhbmQgWHJlbmRlciBleHRlbnNpb25zIGFyZSBmb3VuZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177534</attachid>
            <date>2012-12-04 13:19:18 -0800</date>
            <delta_ts>2012-12-05 10:30:12 -0800</delta_ts>
            <desc>Fix win build</desc>
            <filename>bug-102543-20121204211643.patch</filename>
            <type>text/plain</type>
            <size>42939</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU4ZTBjZWU3NTBjNGNl
NzEyNWQ4OTNjZmRlMGEyYjM5MGQyNzYxNC4uYmY3NjI2ZGM1NGZhNzRlNzVjYzY4ODk5ZjMzOGM0
MWQ5Y2ZjMWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMi0wNCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzb3duT3BlbmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYmZkY2ZiOGE4MGRlZjA3ZDIwMmVhNjg2YzcyNmJlMTk4OGVlZTk5ZC4uZWYwMDExMzI2OTY5
YTMwZDdkMzhkNTdmMDBkZTA1YWRiMGZhN2IwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEyLTEyLTA0ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVk
T2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0
MworCisgICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWYuaW46
CisKIDIwMTItMTItMDQgIFl1bmkgSmVvbmcgIDx5aG5ldC5qdW5nQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gQWRkIEFQSXMgdG8gdG9nZ2xlIHBsdWctaW5zIHN1cHBvcnQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IDhkZDU2YWNlNTU5ZTliYjUyYTU2ZDQ3NGVmMjY1NWVmZTc2
MWI3MTMuLjdiY2YzZmVlNmIyZmM4YmRkZDBmYjhhNGMzMmM4MzM4ZGRhNmI5YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC03NjEsNiArNzYxLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyNHNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplckNo
dW5rU2l6ZUVpCiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVE
ZWxheUVkCitfX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHRFdgogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c0V2CiBfX1pON1dlYkNvcmU0UGFnZTM2c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDlkNTM1OTc2MTJhMmEwOTUxMGVmYmJmNjU1ZTVh
YWQ4ZGFiNWUzOTUuLjM2ZDY0N2FlYzQ0ODE0NmZjYTc2YTY5MGEwYjM0MWQ1OWU1YWM4N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMjU1LDYgKzI1NSwxNyBAQCBTdHJpbmcgUGFnZTo6c2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBQ
YWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCit7CisgICAgaWYgKERvY3Vt
ZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVu
dC0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0Fz
VGV4dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01vZGVJbmZv
IHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCmluZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0ZmEzNmIwMGMuLjZj
Mzk1NTBmYWUwNWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC0xOTYsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAgICBTdHJpbmcgc2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBw
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCBjZDk0MzJjMmE4MmQ4ZTAxODAwNzQ3YzRiMmZkMDg3NGUwOWViMjYyLi5kZTFlMWU1Nzg2
NDI2ZTNmZmYzZTY1OWM5ZjYxNmFiZTMxMDc3NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NSwzNyAr
NjUsMzIgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xs
aW5nQ29vcmRpbmF0b3IocGFnZSkpOwogfQogCi1zdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3Jv
bGxPZmZzZXQoaW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgbWF4VmFsdWUsIGludCBzY3JvbGxPcmln
aW4sIGZsb2F0IGRyYWdGYWN0b3IpCitzdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZz
ZXQoaW50IHZpc2libGVDb250ZW50U2l6ZSwgaW50IGNvbnRlbnRzU2l6ZSwgaW50IHNjcm9sbFBv
c2l0aW9uLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29sIGZp
eGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgaWYgKCFtYXhWYWx1ZSkK
KyAgICBpbnQgbWF4VmFsdWUgPSBjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemU7Cisg
ICAgaWYgKG1heFZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFzY3Jv
bGxPcmlnaW4pIHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgMCkKLSAgICAgICAgICAg
IHNjcm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24gPiBt
YXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDw9IDApCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCiAgICAgICAg
ICAgICBzY3JvbGxQb3NpdGlvbiA9IG1heFZhbHVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChzY3JvbGxQb3NpdGlvbiA+IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7Ci0g
ICAgICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQorICAgICAgICBpZiAo
c2Nyb2xsUG9zaXRpb24gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAo
c2Nyb2xsUG9zaXRpb24gPCAtbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9
IC1tYXhWYWx1ZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICogZHJh
Z0ZhY3RvcjsKKworICAgIGZsb2F0IGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lID8gMSA6IChjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemUgKiBm
cmFtZVNjYWxlRmFjdG9yKSAvIG1heFZhbHVlOworICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAq
IGRyYWdGYWN0b3IgLyBmcmFtZVNjYWxlRmFjdG9yOwogfQogCiBJbnRTaXplIHNjcm9sbE9mZnNl
dEZvckZpeGVkUG9zaXRpb24oY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9v
bCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIEludFNpemUgbWF4
T2Zmc2V0KGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCks
IGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0g
ICAgCi0gICAgRmxvYXRTaXplIGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRp
dmVUb0ZyYW1lID8gRmxvYXRTaXplKDEsIDEpIDogRmxvYXRTaXplKAotICAgICAgICAoY29udGVu
dHNTaXplLndpZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAqIGZyYW1lU2NhbGVG
YWN0b3IpIC8gbWF4T2Zmc2V0LndpZHRoKCksCi0gICAgICAgIChjb250ZW50c1NpemUuaGVpZ2h0
KCkgLSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1h
eE9mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZz
ZXQoc2Nyb2xsUG9zaXRpb24ueCgpLCBtYXhPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT3JpZ2luLngo
KSwgZHJhZ0ZhY3Rvci53aWR0aCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHkgPSBm
aXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLnkoKSwgbWF4T2Zmc2V0Lmhl
aWdodCgpLCBzY3JvbGxPcmlnaW4ueSgpLCBkcmFnRmFjdG9yLmhlaWdodCgpIC8gZnJhbWVTY2Fs
ZUZhY3Rvcik7Ci0KKyAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJs
ZUNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBzY3JvbGxQb3NpdGlv
bi54KCksIHNjcm9sbE9yaWdpbi54KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxlbWVudHNM
YXlvdXRSZWxhdGl2ZVRvRnJhbWUpOworICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9m
ZnNldCh2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSwg
c2Nyb2xsUG9zaXRpb24ueSgpLCBzY3JvbGxPcmlnaW4ueSgpLCBmcmFtZVNjYWxlRmFjdG9yLCBm
aXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKICAgICByZXR1cm4gSW50U2l6ZSh4
LCB5KTsKIH0KIApAQCAtMzQzLDggKzMzOCw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAg
ICAgICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsKICAg
ICAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkg
fHwgIXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3Ry
YWluZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVs
T2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9
IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxheWVy
KCk7CisgICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmICFsYXllci0+aXNGaXhl
ZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTgsNCArMzkzLDI5IEBAIFN0cmluZyBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgcmVhc29u
cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAgICBpZiAocmVhc29u
cyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIpOworICAgIGlmIChy
ZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIik7
CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91
dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxp
bmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICIpOworICAgIGlmIChy
ZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50LCAiKTsKKworICAgIGlmIChz
dHJpbmdCdWlsZGVyLmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLnJlc2l6ZShzdHJp
bmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKK30KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4NjUwZWFiNDAyNWRlM2RiZDky
NmQwYzZmOTg1MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5NWNlZjc4OWE4YjRlOGU0ODBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIq
LCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJM
YXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIG1haW5U
aHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKTsK
KyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsKKwog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1MzNhZTZhZmUzNTk0NzM5YjZl
ODZkN2M1NThkMzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4NWRlMzYzYWE2ODgzNjRlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTggKzIyNyw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywg
aW50IGluZGVudCkgY29uCiAKICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsK
LSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIjsKLSAg
ICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAm
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgICAgICB0
cyA8PCAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgc2xvdyByZXBh
aW50IG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQotICAgICAgICAgICAg
dHMgPDwgIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGlu
ZyBmaXhlZCBsYXllcnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJG
aXhlZE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIG5vbi1sYXllciBmaXhlZCBvYmpl
Y3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKLSAgICAg
ICAgICAgIHRzIDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAgICAgIHRzIDw8ICIpXG4iOwor
ICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiIDw8IFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIDw8ICIpXG4iOwogICAg
IH0KIAogICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IEludFBvaW50KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVmNWJhMzI2YTgz
ZDQyYjM3MDY1NTAzNjBjZTE3ZDQ1Y2E4ZDM1N2EuLjc3N2EyZTZhMDc1MGZlMzI4ZTIxMmU1NjMx
ODViNWEwY2QyZGY3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMzExOSw2ICszMTE5LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFN1cHByZXNz
UGFpbnRpbmdMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChpc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFp
bnRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAg
ICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRo
cm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1
cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25n
IHJvb3QgaW4gdGhpcyBjYXNlLgpAQCAtNDczMiw2ICs0NzM1LDE5IEBAIEdyYXBoaWNzTGF5ZXIq
IFJlbmRlckxheWVyOjpsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fYmFja2luZyA/IG1fYmFja2luZy0+bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSA6IDA7CiB9CisK
K2Jvb2wgUmVuZGVyTGF5ZXI6OmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkgY29uc3QK
K3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5zZXR0
aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4gYWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgZm9yIGZpeGVkIHBvc2l0aW9uIGlzIGVuYWJsZWQsIGFsbCBmaXhl
ZCBwb3NpdGlvbiBsYXllcnMgc3RhcnRpbmcgYSBzdGFja2luZyBjb250ZXh0CisgICAgICAgIC8v
IGFuZCBub3QgdW5kZXIgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHNob3VsZCBiZSBjb21wb3NpdGVk
LCBvciBpcyBub3QgdG8gYmUgcGFpbnRlZCAoZS5nLiBvdXQtb2YtdmlldykuCisgICAgICAgIGlm
ICghaXNDb21wb3NpdGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiBtX3JlbmRlcmVyLT5z
dHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbV9yZW5kZXJlci0+Y29udGFp
bmVyKCkgPT0gbV9yZW5kZXJlci0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIGJvb2wgUmVuZGVyTGF5ZXI6
OnBhaW50c1dpdGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAwYzBjZDc5ODIxYmFlOTJj
ODk1OTk0YjBjNzdkMzMwMTFiZWFhZjY5Li5hMmFmNTZhY2VkZWJkOTQ2YjhlOTM4ZjZkOWRjMzMy
NmZhYzBlZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjU1
LDYgKzY1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9y
VmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxh
eWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHVzZXNDb21wb3Np
dGVkU2Nyb2xsaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb25O
b3RUb0JlUGFpbnRlZCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIGlzQ29tcG9zaXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNDb21wb3NpdGVkTWFzaygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNk
MzhmMjRjYWE3NzAuLjNiY2NjOTBhMzBkN2QzZWM0M2Y3NGE0M2RhN2MyZTJjOTJkOTBiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCkBAIC0xOTc2LDYgKzE5NzYsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgIGlm
IChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpIHsKICAg
ICAgICAgSW50UmVjdCB2aWV3Qm91bmRzID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KTsKICAgICAgICAgSW50UmVjdCBsYXllckJvdW5kcyA9IGNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3Vu
ZHMobGF5ZXIsIHJvb3RSZW5kZXJMYXllcigpKTsKKyAgICAgICAgbGF5ZXJCb3VuZHMuc2NhbGUo
cGFnZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBpZiAoIXZpZXdCb3VuZHMuaW50ZXJzZWN0cyhs
YXllckJvdW5kcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDk0YTNiMDUyZWMwY2ZiOWM5NTM5NzM2Yjg1NmZh
ZmU0NzNkZmQxNGEuLmY1MmVhOTk2ZDAyZmYxYTg4Mjk4Y2Q1NDAzYjk1M2M2MGM3ZDMxYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NjUsNiArMTQ2NSwyMCBAQCBT
dHJpbmcgSW50ZXJuYWxzOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIHJldHVybiBwYWdlLT5zY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHQoKTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAg
ICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAg
IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIHBhZ2UtPm1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zQXNUZXh0KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3Vt
ZW50UmVzb3VyY2VzKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggYjk5ZjNlM2FiMDBiYjQxYzM2NzNhYTZhMjE2YzU2YjkwYWU4ZDliNC4uNGIxMzYxNDhkNzg3
NmMxNmEyMmI2M2ExY2QwNGM4NGE2ZDA0Mjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCkBAIC0yMDksNiArMjA5LDggQEAgcHVibGljOgogICAgIFN0cmluZyByZXBhaW50UmVjdHNB
c1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIHNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAor
ICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhEb2N1bWVudCosIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKKwogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNl
cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgYWxsb3dSb3Vu
ZGluZ0hhY2tzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
NmRjNzVjZDAxYWU5YmU5YmZlOTFjN2EwZGI4OTk0ZTRjZDU2YThhYy4uYTkxOWZmMjFjMDdlNGNk
YjAxMjlkMmEwY2I0Zjc4MTJjODY5MmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtMTY2LDYgKzE2Niw3IEBACiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChp
biBEb2N1bWVudCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykg
cmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAg
IERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhpbiBEb2N1bWVudCBkb2N1bWVu
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0Fz
VGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi5kZWYuaW4KaW5kZXggMjViOTk5ZmIyNzU1ZjRlM2M0MzI3ZjA5ZWQ3ODdk
NWExNmE1ZjAwMy4uZGJlYzYyYzg4OWFlYTIzOGFlNDM5MWMzMGU4N2NjZjBkYTBhMDNjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgpAQCAtMjI5LDYgKzIyOSw3IEBAIEVYUE9SVFMKICAg
ICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJW
U3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpT
Q0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZE
T01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNl
ckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgorICAgICAg
ICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZT
dHJpbmdAV1RGQEBYWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBB
QEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgogICAgICAg
ICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgog
ICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA4ZDA0ZTYwNzljMDVlOTc4MTE5OWQyNTMz
ZTA2MTBmOTBmZGU5YjU4Li5jNzI3NTUxM2Y5YWEwOGQxYjA2MjNmYzQ1ZmY0MGFiZmJhMDkzNzZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTMxLDYgKzMxLDcgQEAgX1pON1dlYkNvcmU0
UGFnZTEzc2V0UGFnaW5hdGlvbkVSS05TXzEwUGFnaW5hdGlvbkU7CiBfWk43V2ViQ29yZTRQYWdl
MThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlNFBhZ2Uy
MHNldERldmljZVNjYWxlRmFjdG9yRWY7CiBfWk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHRFdjsKK19aTjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0RXY7CiBfWk43V2ViQ29yZTRQYWdlMTZzZXRDYW5TdGFydE1lZGlhRWI7CiBfWk43
V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5T
XzEwQ2xpZW50UmVjdEU7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE5TXzEwU2hhZG93Um9vdEU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzUzMDgxNjJiZTZl
MzMyMTVmYjUwMWExN2JiZjRkMzM5ZWQ3YWVmZS4uNmUxODE0ZGUwOGFmMjZiNjk5YzU4M2FiNzJk
ZDgzNTczNjE3NDY3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEyLTAzICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1
ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkL21vZGlmaWVkIHRlc3QgdG8gZW5z
dXJlIHNsb3ctc2Nyb2xsaW5nIGlzIG5vdCB0cmlnZ2VyZWQgYnkgb3V0LW9mLXZpZXcgZml4ZWQt
cG9zaXRpb25lZCBlbGVtZW50cywKKyAgICAgICAgYW5kIGVuc3VyZSBvdXQtb2YtdmlldyBjaGVj
a2luZyBpcyBjb3JyZWN0IHdoZW4gcGFnZSBpcyBzY2FsZWQuCisKKyAgICAgICAgQlRXLCBmaXhl
ZCBzb21lIHRlc3RzIHRoYXQgc2V0IGVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbiBp
biBvbmxvYWQgaGFuZGxlciB3aGljaCBtYXkgbm90IHRha2UgZWZmZWN0IGJlY2F1c2UgaXQgaXMg
dG9vIGxhdGUuCisgICAgICAgIExlYXZlIHRoZSBpbWFnZSBtaXNtYXRjaGVzIHRvIGJ1ZyA5Njgz
OS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sOgorICAg
ICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sOgorICAgICAgICAqIGNv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Ut
c2NhbGUuaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBj
b21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1w
YWdlLXNjYWxlLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZp
ZXctc2NhbGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0
aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWw6IEVuc3VyZSBzbG93LXNjcm9sbGlu
ZyBpcyBub3QgdHJpZ2dlcmVkLiBFeHBlY3RhdGlvbiBpcyB1bmNoYW5nZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50
eHQ6IFVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2YgbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMuCisKIDIwMTItMTItMDQgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgbWF0aG1sIHJlYmFzZWxpbmUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVk
LXBhZ2Utc2NhbGUtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkv
Zml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRleCA3OWU0
MjYxOGY1ZDU0MjJlOTAzNWUzNWE1MDI5YTAwNjI3NDdmMTFkLi5mYmIxNzVmZDZmZWM4YTdiMjg2
NWRlNGJmMjBmZDExY2FlOTYxNzZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKQEAgLTMsMjcgKzMsMjUgQEAKIDxoZWFkPgog
PHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxl
ZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9CiAu
Zml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwot
ICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAg
IGxlZnQ6IDEwcHg7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7
Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAg
d2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKLSAgICB9Ci0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRy
dWUpOwotICB9CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Cit9CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9z
Y3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAw
MHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIw
MDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxk
aXYgY2xhc3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29t
cG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Z2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1s
CmluZGV4IDQ1MmQxZGIzMDEwNzZjZGRmMjYyNmFmMzQ4ZGU5MTBjZjFiZWI0MjUuLjhhYWZiMjIw
YzA2MzUwOThlYThiZTgyZjA3MmY5ZGQ2YjNkMjdhOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS1zY3JvbGwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwKQEAgLTMsMjkgKzMs
MjcgQEAKIDxoZWFkPgogPHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxl
ZnQ6IDEwcHg7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwot
ICB6LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4OwotICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xh
dGVaKDApOworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6
IDEwcHg7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTsKIH0KIDwvc3R5bGU+
CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFs
cykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGlu
Z0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VT
Y2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9Ci0gICAgd2luZG93LnNjcm9sbFRvKDEwMCwxMDAp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotICB9CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOworfQord2luZG93
LnNjcm9sbFRvKDEwMCwxMDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxl
KCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3
aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRl
eCI+VGhpcyB0ZXN0IHNob3VsZCBub3QgaGl0IGFuIGFzc2VydGlvbiBpbiBSZW5kZXJHZW9tZXRy
eU1hcCBpbiBkZWJ1ZyBidWlsZHM8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXot
aW5kZXgiPlRoaXMgdGVzdCBzaG91bGQgbm90IGhpdCBhbiBhc3NlcnRpb24gaW4gUmVuZGVyR2Vv
bWV0cnlNYXAgaW4gZGVidWcgYnVpbGRzPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBv
c2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGZjNjM2NTIwZjk0NzE2ODYz
OWZmOTVkOTE2MTIyZjM3MDE2NzlkYTAuLjZmMmY3MjI1NmNlODRjYzMzY2M5YWEwYjJlMGRmMzE0
NDJkYWUxNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2Zp
eGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS5odG1sCkBAIC0zLDI3ICszLDI1IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWlu
ZGV4IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0g
IHBvc2l0aW9uOiBmaXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3Np
dGlvbjogZml4ZWQ7CisgICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OwogfQogPC9zdHls
ZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0
aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFn
ZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gIH0KK2lmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXRQYWdl
U2NhbGVGYWN0b3IoMiwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxv
YWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5
IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQt
bm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgtei1pbmRl
eCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1k
b3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRleCBjNWFkNDZjOWE2
ZDhmNDNiNDQyYTk2NzYwZWRkZGY5NmE4OTM1YzhjLi45ZjQ2YmRhNDlhZDQ5YmQ0ODhlMDRmMDE0
ZGEwZGZjZmRmZjc2MzlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1p
ZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbApAQCAtMywyOCArMywyOCBAQAog
PGhlYWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBw
eDsKIH0KIC5maXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5k
ZXg6IDE7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6
IDE7CisgICAgbGVmdDogMTBweDsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiB0
ZXN0KCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsK
LSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0g
ICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCh0cnVlKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Cisg
ICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKK30KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAK
K2Z1bmN0aW9uIHRlc3QoKSB7CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZnJhbWUnKS5jb250ZW50RG9jdW1lbnQub3BlbigpOwogICAgIGQud3JpdGUoIjxkaXYgc3R5bGU9
J3Bvc2l0aW9uOmZpeGVkOyB6LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVTVDwvZGl2PiIpOwog
ICAgIGQuY2xvc2UoKTsKLSAgfQorfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9
InRlc3QoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1l
LWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmlu
ZGV4IGU3OWI5ZjJhZWIwOWNiYzdhMjllOTAxNDE5ZDIwYzA3NTcyZDE1ZGYuLjI5YThjM2EyMWQ1
MDBmNTEzMWRkOGY0Y2ZjNmNiODlmYWUzZjQ4NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Ut
c2NhbGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1w
b3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTMsMjggKzMsMjgg
QEAKIDxoZWFkPgogPHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6
IDEwcHg7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6
LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWlu
ZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rp
b24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1
ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsK
LSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsK
KyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKK30KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAK
K2Z1bmN0aW9uIHRlc3QoKSB7CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZnJhbWUnKS5jb250ZW50RG9jdW1lbnQub3BlbigpOwogICAgIGQud3JpdGUoIjxkaXYgc3R5bGU9
J3Bvc2l0aW9uOmZpeGVkOyB6LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVTVDwvZGl2PiIpOwog
ICAgIGQuY2xvc2UoKTsKLSAgfQorfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9
InRlc3QoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNm
b3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLWRvd24uaHRtbAppbmRleCA2YzE3Zjk2ZWUwODBlN2EzM2M3M2M1MDhhNDRmNzEzM2E5ZTg4
ZmY0Li4xNTBhMWEyMzIzNTg0ZmMwZTM4ZmMzMWVmYTU5YmY2MzY5MDAxY2E1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zv
cm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdl
LXNjYWxlLWRvd24uaHRtbApAQCAtMywyOSArMywyNyBAQAogPGhlYWQ+CiA8c3R5bGU+CiAuZml4
ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMTBweDsKLSAg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9y
bTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOwogfQogLmZpeGVkLXdpdGgtei1pbmRl
eCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKLSAg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKKyAgICBw
b3NpdGlvbjogZml4ZWQ7CisgICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OworICAgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7CiB9CiA8L3N0
eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9z
aXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXRQ
YWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwotICB9CitpZiAod2luZG93
LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4K
Kzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0i
Zml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgt
ei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9z
aXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGY5YTBjMzcz
ODczZjk1ZTRmMmE1Yzc3ZmZkMTNkOGY0NmViZTJjNmQuLjU3ZjcyZTNkMTkzMjc4Mjc0OWIwNmM1
MDQwNTkwZTYyMmI4MzZjZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10
cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTMsMjkgKzMsMjcgQEAKIDxo
ZWFkPgogPHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7
Ci0gIGxlZnQ6IDEwcHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJv
dGF0ZSgyMGRlZyk7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7Cisg
ICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKIH0K
IC5maXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6IDE7
Ci0gIGxlZnQ6IDEwcHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJv
dGF0ZSgyMGRlZyk7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAg
bGVmdDogMTBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3Rh
dGUoMjBkZWcpOwogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewot
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIH0KLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7
Ci0gIH0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2lu
ZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Cit9CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+
CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hl
aWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsi
PgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xh
c3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0
LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDUzNzY2NTQ4MjlkY2JiY2Q5ZGY4ZDJiZTJiMmMwMTYxMDYzZTYxYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw2MyBAQAorTm90IHNjYWxlZDoKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNzg1LjAwIDEw
MTYuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMg
Nzg1LjAwIDEwMTYuMDApCisgICAgICAoY2hpbGRyZW4gMgorICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEw
LjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAg
KGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQor
U2NhbGU9MC41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA0MDAuMDAgNTA4LjAwKQorICAo
Y2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkK
KyAgICAgIChib3VuZHMgODAwLjAwIDEwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFswLjUwIDAu
MDAgMC4wMCAwLjAwXSBbMC4wMCAwLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBd
IFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgIChjaGlsZHJlbiA0CisgICAgICAgIChHcmFw
aGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgMTAwOC4wMCkKKyAgICAgICAgICAo
Ym91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgKHBvc2l0aW9uIDEwMDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAw
IDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBv
c2l0aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAg
ICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEw
LjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2FsZT0xLjU6CisoR3Jh
cGhpY3NMYXllcgorICAoYm91bmRzIDEyNzIuMDAgMTUyNC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRz
IDg0OC4wMCAxMDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBbMS41MCAwLjAwIDAuMDAgMC4wMF0g
WzAuMDAgMS41MCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAu
MDAgMS4wMF0pCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAg
ICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisg
ICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRp
b24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2Fs
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNjMzZDdjZGRkOGUxMTgwMjQzMDQxYmEyNjJlODkwMTVhN2Mz
ZWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKQEAgLTAsMCArMSw3
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmZpeGVkIHsK
KyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4
OworfQorPC9zdHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdp
bmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0
cnVlKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZSIpLmlubmVyVGV4dCA9
IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSBp
bnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAg
IGludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKKworICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxheWVyVHJlZVNjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNU
ZXh0KGRvY3VtZW50KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMu
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDEuNSwgMCwgMCk7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxheWVyVHJlZVNjYWxlZFVwIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFz
VGV4dChkb2N1bWVudCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRlcm5h
bHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAg
fSwgMCk7CisgICAgfSwgZmFsc2UpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5Pgor
PGRpdiBzdHlsZT0iaGVpZ2h0OiAxMDAwcHgiPgorICAgIE5vdCBzY2FsZWQ6CisgICAgPHByZSBp
ZD0ibGF5ZXJUcmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29ucyI+PC9wcmU+CisgICAgU2NhbGU9MC41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxl
ZERvd24iPjwvcHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2Nh
bGVkRG93biI+PC9wcmU+CisgICAgU2NhbGU9MS41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNj
YWxlZFVwIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1Nj
YWxlZFVwIj48L3ByZT4KKzwvZGl2PgorCis8IS0tIE5vIGxheWVyIGluIGFueSBjYXNlLiAtLT4K
KzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAtMTAwcHgiPjwvZGl2PgorCis8IS0tIEhh
cyBjb21wb3NpdGVkIGxheWVyIHdoZW4gc2NhbGVkIGRvd247IG5vIGxheWVyIHdoZW4gbm90IHNj
YWxlZCBvciBzY2FsZWQgdXAuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiPjwvZGl2PgorPGRpdiBj
bGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KKworPCEt
LSBIYXMgY29tcG9zaXRlZCBsYXllciB3aGVuIG5vdCBzY2FsZWQgYW5kIHNjYWxlZCBkb3duOyBu
byBsYXllciBzY2FsZWQgdXAuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBw
eDsgbGVmdDogNjAwcHgiPjwvZGl2PgorCis8IS0tIEFsd2F5cyBoYXMgY29tcG9zaXRlZCBsYXll
ci4gLS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0OiAwcHgiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9m
LXZpZXcuaHRtbAppbmRleCBjMmY2ZTQ5MjAzMDNkMTY4ZTNhMGUxMGIzNjYwMzc4ZTAwOWY5ZWRi
Li41MjY3MThhYmQwNDMzOTUyNzBiNWQ3MGQ4YjZkMjNlMDc2YTkzZDU0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQt
b2Ytdmlldy5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKQEAgLTIsNDAgKzIsNDIgQEAKIAogPGh0
bWw+CiA8aGVhZD4KLSAgPHN0eWxlPgotICAgIC5maXhlZCB7Ci0gICAgICBwb3NpdGlvbjogZml4
ZWQ7Ci0gICAgICB3aWR0aDogMTBweDsKLSAgICAgIGhlaWdodDogMTBweDsKLSAgICB9Ci0gIDwv
c3R5bGU+Ci0KLSAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVD
b21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5s
YXllclRyZWVBc1RleHQoZG9jdW1lbnQpOwotICAgICAgfSwgZmFsc2UpOwotICAgIH0KLSAgPC9z
Y3JpcHQ+Cis8c3R5bGU+CisuZml4ZWQgeworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB3aWR0
aDogMTBweDsKKyAgICBoZWlnaHQ6IDEwcHg7Cit9Cis8L3N0eWxlPgorCis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIikuaW5uZXJUZXh0ID0g
d2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRl
eHQgPSB3aW5kb3cuaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50
KTsKKyAgICB9LCBmYWxzZSk7Cit9Cis8L3NjcmlwdD4KIDwvaGVhZD4KIAogPGJvZHk+Ci0gIDxk
aXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4KLSAgICA8cHJlIGlkPSJsYXllcnRyZWUiPjwvcHJl
PgotICA8L2Rpdj4KLQotICA8IS0tIE5laXRoZXIgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBn
ZXRzIGl0cyBvd24gbGF5ZXIuIC0tPgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5k
ZXg6IC0xIj48L2Rpdj4KLSAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsg
dG9wOiAtMTAwcHgiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6
IC0xOyB0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KLQotICA8IS0tIFRoaXMgZWxlbWVu
dCBnZXRzIGl0cyBvd24gbGF5ZXIgYmVjYXVzZSBpdCBpbnRlcnNlY3RzIHdpdGggdGhlIHZpZXdw
b3J0LiAtLT4KLSAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAw
cHg7IGxlZnQ6IDBweCI+PC9kaXY+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+CisgICAg
PHByZSBpZD0ibGF5ZXJUcmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29ucyI+PC9wcmU+Cis8L2Rpdj4KKworPCEtLSBOZWl0aGVyIG9mIHRoZSBmb2xsb3dp
bmcgZWxlbWVudHMgZ2V0cyBpdHMgb3duIGxheWVyLiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVkIiBz
dHlsZT0iei1pbmRleDogLTEiPjwvZGl2PgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWlu
ZGV4OiAtMTsgdG9wOiAtMTAwcHgiPjwvZGl2PgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6
LWluZGV4OiAtMTsgdG9wOiAwcHg7IGxlZnQ6IDEwMDBweCI+PC9kaXY+CisKKzwhLS0gVGhpcyBl
bGVtZW50IGdldHMgaXRzIG93biBsYXllciBiZWNhdXNlIGl0IGludGVyc2VjdHMgd2l0aCB0aGUg
dmlld3BvcnQuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9w
OiAwcHg7IGxlZnQ6IDBweCI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDYzZTY4NTQyZGRj
MDY4ZjU2OWNjOTg3OTQ5NDRkM2VlYWVhYjZkMDEuLjZmOGJkMDRhNTU0NTU2OWJkM2NlODQzNzM3
YjhjMmJkMzljODc4YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMzU4Myw4ICszNTgzLDEwIEBAIGNyYnVnLmNvbS8xMzI4OTggaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwgWyBGYWlsdXJl
IFBhCiAjIFRpbWluZyBvdXQgb24gc29tZSBXaW5kb3dzIGJvdHMKIHdlYmtpdC5vcmcvYi84OTUx
MCBbIFdpbiBdIGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sIFsgUGFzcyBUaW1l
b3V0IF0KIAotd2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBv
c2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgUGFzcyBdCi13ZWJraXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVh
bC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1j
b21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJr
aXQub3JnL2IvOTY4MzkgY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNm
b3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0
aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2Nh
bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0
aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2Nh
bGUtZG93bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgcGxh
dGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvODk3MDIgY29tcG9zaXRpbmcvc2NhbGluZy90
aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiB3ZWJr
aXQub3JnL2IvODk3MDIgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0
aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IFBhc3MgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9s
bGluZy1leHBlY3RlZC50eHQKaW5kZXggYmU0MDgwY2YxY2JhYThkZDFjZWIxZjlkYjEyMjVjOGYz
MTExNWI4My4uMzJlZjBjZTVjYzc1OWVmYmY3YTAyMGVjNGYxYmJiMThiZDIwZTJhYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRy
ZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVk
LnR4dApAQCAtMSw2ICsxLDYgQEAKIChTY3JvbGxpbmcgbm9kZQogICAodmlld3BvcnQgcmVjdCAw
IDAgODAwIDYwMCkKICAgKGNvbnRlbnRzIHNpemUgODAwIDYwMCkKLSAgKFNjcm9sbGluZyBvbiBt
YWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICkKKyAgKFNjcm9s
bGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMpCiAp
CiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNWExMGQ5YmIxNjhj
OTE1NTVjZWE4MDcwMzRhY2M2N2FjNGI3MjhhLi5mNDIxNDlhMmRlZjUzMWM2N2IyZTYyY2I1NjRk
ZTFmMDAxY2QxMWRlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMTItMDMgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dS
ZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3Np
dGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHN5bWJvbC4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXI6CisKIDIwMTItMTItMDQgIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFs
bHlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl1bQUNdIFVTRV9HUkFQSElDU19TVVJG
QUNFIHNob3VsZCBiZSBlbmFibGVkIG9ubHkgaWYgWGNvbXBvc2l0ZSBhbmQgWHJlbmRlciBleHRl
bnNpb25zIGFyZSBmb3VuZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177603</attachid>
            <date>2012-12-04 16:41:26 -0800</date>
            <delta_ts>2012-12-05 09:31:23 -0800</delta_ts>
            <desc>Try WebKit2.def.in change</desc>
            <filename>bug-102543-20121205003852.patch</filename>
            <type>text/plain</type>
            <size>65730</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU4ZTBjZWU3NTBjNGNl
NzEyNWQ4OTNjZmRlMGEyYjM5MGQyNzYxNC4uYmY3NjI2ZGM1NGZhNzRlNzVjYzY4ODk5ZjMzOGM0
MWQ5Y2ZjMWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMi0wNCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzb3duT3BlbmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYmZkY2ZiOGE4MGRlZjA3ZDIwMmVhNjg2YzcyNmJlMTk4OGVlZTk5ZC4uZWYwMDExMzI2OTY5
YTMwZDdkMzhkNTdmMDBkZTA1YWRiMGZhN2IwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEyLTEyLTA0ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVk
T2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0
MworCisgICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWYuaW46
CisKIDIwMTItMTItMDQgIFl1bmkgSmVvbmcgIDx5aG5ldC5qdW5nQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gQWRkIEFQSXMgdG8gdG9nZ2xlIHBsdWctaW5zIHN1cHBvcnQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IDhkZDU2YWNlNTU5ZTliYjUyYTU2ZDQ3NGVmMjY1NWVmZTc2
MWI3MTMuLjdiY2YzZmVlNmIyZmM4YmRkZDBmYjhhNGMzMmM4MzM4ZGRhNmI5YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC03NjEsNiArNzYxLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyNHNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplckNo
dW5rU2l6ZUVpCiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVE
ZWxheUVkCitfX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHRFdgogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c0V2CiBfX1pON1dlYkNvcmU0UGFnZTM2c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDlkNTM1OTc2MTJhMmEwOTUxMGVmYmJmNjU1ZTVh
YWQ4ZGFiNWUzOTUuLjM2ZDY0N2FlYzQ0ODE0NmZjYTc2YTY5MGEwYjM0MWQ1OWU1YWM4N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMjU1LDYgKzI1NSwxNyBAQCBTdHJpbmcgUGFnZTo6c2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBQ
YWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCit7CisgICAgaWYgKERvY3Vt
ZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVu
dC0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0Fz
VGV4dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01vZGVJbmZv
IHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCmluZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0ZmEzNmIwMGMuLjZj
Mzk1NTBmYWUwNWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC0xOTYsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAgICBTdHJpbmcgc2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBw
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCBjZDk0MzJjMmE4MmQ4ZTAxODAwNzQ3YzRiMmZkMDg3NGUwOWViMjYyLi5kZTFlMWU1Nzg2
NDI2ZTNmZmYzZTY1OWM5ZjYxNmFiZTMxMDc3NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NSwzNyAr
NjUsMzIgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xs
aW5nQ29vcmRpbmF0b3IocGFnZSkpOwogfQogCi1zdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3Jv
bGxPZmZzZXQoaW50IHNjcm9sbFBvc2l0aW9uLCBpbnQgbWF4VmFsdWUsIGludCBzY3JvbGxPcmln
aW4sIGZsb2F0IGRyYWdGYWN0b3IpCitzdGF0aWMgaW50IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZz
ZXQoaW50IHZpc2libGVDb250ZW50U2l6ZSwgaW50IGNvbnRlbnRzU2l6ZSwgaW50IHNjcm9sbFBv
c2l0aW9uLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29sIGZp
eGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCiB7Ci0gICAgaWYgKCFtYXhWYWx1ZSkK
KyAgICBpbnQgbWF4VmFsdWUgPSBjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemU7Cisg
ICAgaWYgKG1heFZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFzY3Jv
bGxPcmlnaW4pIHsKLSAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgMCkKLSAgICAgICAgICAg
IHNjcm9sbFBvc2l0aW9uID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24gPiBt
YXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uIDw9IDApCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCiAgICAgICAg
ICAgICBzY3JvbGxQb3NpdGlvbiA9IG1heFZhbHVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChzY3JvbGxQb3NpdGlvbiA+IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IDA7Ci0g
ICAgICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uIDwgLW1heFZhbHVlKQorICAgICAgICBpZiAo
c2Nyb2xsUG9zaXRpb24gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAo
c2Nyb2xsUG9zaXRpb24gPCAtbWF4VmFsdWUpCiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9
IC1tYXhWYWx1ZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICogZHJh
Z0ZhY3RvcjsKKworICAgIGZsb2F0IGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lID8gMSA6IChjb250ZW50c1NpemUgLSB2aXNpYmxlQ29udGVudFNpemUgKiBm
cmFtZVNjYWxlRmFjdG9yKSAvIG1heFZhbHVlOworICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAq
IGRyYWdGYWN0b3IgLyBmcmFtZVNjYWxlRmFjdG9yOwogfQogCiBJbnRTaXplIHNjcm9sbE9mZnNl
dEZvckZpeGVkUG9zaXRpb24oY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9v
bCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIEludFNpemUgbWF4
T2Zmc2V0KGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCks
IGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0g
ICAgCi0gICAgRmxvYXRTaXplIGRyYWdGYWN0b3IgPSBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRp
dmVUb0ZyYW1lID8gRmxvYXRTaXplKDEsIDEpIDogRmxvYXRTaXplKAotICAgICAgICAoY29udGVu
dHNTaXplLndpZHRoKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAqIGZyYW1lU2NhbGVG
YWN0b3IpIC8gbWF4T2Zmc2V0LndpZHRoKCksCi0gICAgICAgIChjb250ZW50c1NpemUuaGVpZ2h0
KCkgLSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1h
eE9mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZz
ZXQoc2Nyb2xsUG9zaXRpb24ueCgpLCBtYXhPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT3JpZ2luLngo
KSwgZHJhZ0ZhY3Rvci53aWR0aCgpIC8gZnJhbWVTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHkgPSBm
aXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0aW9uLnkoKSwgbWF4T2Zmc2V0Lmhl
aWdodCgpLCBzY3JvbGxPcmlnaW4ueSgpLCBkcmFnRmFjdG9yLmhlaWdodCgpIC8gZnJhbWVTY2Fs
ZUZhY3Rvcik7Ci0KKyAgICBpbnQgeCA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJs
ZUNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBzY3JvbGxQb3NpdGlv
bi54KCksIHNjcm9sbE9yaWdpbi54KCksIGZyYW1lU2NhbGVGYWN0b3IsIGZpeGVkRWxlbWVudHNM
YXlvdXRSZWxhdGl2ZVRvRnJhbWUpOworICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNjcm9sbE9m
ZnNldCh2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCksIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSwg
c2Nyb2xsUG9zaXRpb24ueSgpLCBzY3JvbGxPcmlnaW4ueSgpLCBmcmFtZVNjYWxlRmFjdG9yLCBm
aXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKICAgICByZXR1cm4gSW50U2l6ZSh4
LCB5KTsKIH0KIApAQCAtMzQzLDggKzMzOCw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAg
ICAgICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsKICAg
ICAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkg
fHwgIXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3Ry
YWluZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVs
T2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9
IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxheWVy
KCk7CisgICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmICFsYXllci0+aXNGaXhl
ZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTgsNCArMzkzLDI5IEBAIFN0cmluZyBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgcmVhc29u
cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAgICBpZiAocmVhc29u
cyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIpOworICAgIGlmIChy
ZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIik7
CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91
dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxp
bmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICIpOworICAgIGlmIChy
ZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIklzIGltYWdlIGRvY3VtZW50LCAiKTsKKworICAgIGlmIChz
dHJpbmdCdWlsZGVyLmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLnJlc2l6ZShzdHJp
bmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKK30KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjMmYxZmE4NjUwZWFiNDAyNWRlM2RiZDky
NmQwYzZmOTg1MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBmYTgyYzg5NWNlZjc4OWE4YjRlOGU0ODBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIq
LCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJM
YXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIG1haW5U
aHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKTsK
KyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsKKwog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNWQzN2JlMmY1MzNhZTZhZmUzNTk0NzM5YjZl
ODZkN2M1NThkMzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0OGM4Mzk4NWRlMzYzYWE2ODgzNjRlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMjcsMTggKzIyNyw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywg
aW50IGluZGVudCkgY29uCiAKICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsK
LSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIjsKLSAg
ICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAm
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgICAgICB0
cyA8PCAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgc2xvdyByZXBh
aW50IG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQotICAgICAgICAgICAg
dHMgPDwgIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGlu
ZyBmaXhlZCBsYXllcnMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJG
aXhlZE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIG5vbi1sYXllciBmaXhlZCBvYmpl
Y3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OklzSW1hZ2VEb2N1bWVudCkKLSAgICAg
ICAgICAgIHRzIDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7Ci0gICAgICAgIHRzIDw8ICIpXG4iOwor
ICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiIDw8IFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIDw8ICIpXG4iOwogICAg
IH0KIAogICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IEludFBvaW50KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVmNWJhMzI2YTgz
ZDQyYjM3MDY1NTAzNjBjZTE3ZDQ1Y2E4ZDM1N2EuLjc3N2EyZTZhMDc1MGZlMzI4ZTIxMmU1NjMx
ODViNWEwY2QyZGY3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMzExOSw2ICszMTE5LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFN1cHByZXNz
UGFpbnRpbmdMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChpc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFp
bnRlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAg
ICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRo
cm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1
cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25n
IHJvb3QgaW4gdGhpcyBjYXNlLgpAQCAtNDczMiw2ICs0NzM1LDE5IEBAIEdyYXBoaWNzTGF5ZXIq
IFJlbmRlckxheWVyOjpsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fYmFja2luZyA/IG1fYmFja2luZy0+bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSA6IDA7CiB9CisK
K2Jvb2wgUmVuZGVyTGF5ZXI6OmlzRml4ZWRQb3NpdGlvbk5vdFRvQmVQYWludGVkKCkgY29uc3QK
K3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5zZXR0
aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4gYWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgZm9yIGZpeGVkIHBvc2l0aW9uIGlzIGVuYWJsZWQsIGFsbCBmaXhl
ZCBwb3NpdGlvbiBsYXllcnMgc3RhcnRpbmcgYSBzdGFja2luZyBjb250ZXh0CisgICAgICAgIC8v
IGFuZCBub3QgdW5kZXIgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHNob3VsZCBiZSBjb21wb3NpdGVk
LCBvciBpcyBub3QgdG8gYmUgcGFpbnRlZCAoZS5nLiBvdXQtb2YtdmlldykuCisgICAgICAgIGlm
ICghaXNDb21wb3NpdGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiBtX3JlbmRlcmVyLT5z
dHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbV9yZW5kZXJlci0+Y29udGFp
bmVyKCkgPT0gbV9yZW5kZXJlci0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIGJvb2wgUmVuZGVyTGF5ZXI6
OnBhaW50c1dpdGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAwYzBjZDc5ODIxYmFlOTJj
ODk1OTk0YjBjNzdkMzMwMTFiZWFhZjY5Li5hMmFmNTZhY2VkZWJkOTQ2YjhlOTM4ZjZkOWRjMzMy
NmZhYzBlZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjU1
LDYgKzY1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9y
VmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxh
eWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHVzZXNDb21wb3Np
dGVkU2Nyb2xsaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb25O
b3RUb0JlUGFpbnRlZCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIGlzQ29tcG9zaXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNDb21wb3NpdGVkTWFzaygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNk
MzhmMjRjYWE3NzAuLjNiY2NjOTBhMzBkN2QzZWM0M2Y3NGE0M2RhN2MyZTJjOTJkOTBiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCkBAIC0xOTc2LDYgKzE5NzYsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgIGlm
IChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpIHsKICAg
ICAgICAgSW50UmVjdCB2aWV3Qm91bmRzID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KTsKICAgICAgICAgSW50UmVjdCBsYXllckJvdW5kcyA9IGNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3Vu
ZHMobGF5ZXIsIHJvb3RSZW5kZXJMYXllcigpKTsKKyAgICAgICAgbGF5ZXJCb3VuZHMuc2NhbGUo
cGFnZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBpZiAoIXZpZXdCb3VuZHMuaW50ZXJzZWN0cyhs
YXllckJvdW5kcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDk0YTNiMDUyZWMwY2ZiOWM5NTM5NzM2Yjg1NmZh
ZmU0NzNkZmQxNGEuLmY1MmVhOTk2ZDAyZmYxYTg4Mjk4Y2Q1NDAzYjk1M2M2MGM3ZDMxYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NjUsNiArMTQ2NSwyMCBAQCBT
dHJpbmcgSW50ZXJuYWxzOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIHJldHVybiBwYWdlLT5zY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHQoKTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAg
ICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAg
IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIHBhZ2UtPm1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zQXNUZXh0KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3Vt
ZW50UmVzb3VyY2VzKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggYjk5ZjNlM2FiMDBiYjQxYzM2NzNhYTZhMjE2YzU2YjkwYWU4ZDliNC4uNGIxMzYxNDhkNzg3
NmMxNmEyMmI2M2ExY2QwNGM4NGE2ZDA0Mjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCkBAIC0yMDksNiArMjA5LDggQEAgcHVibGljOgogICAgIFN0cmluZyByZXBhaW50UmVjdHNB
c1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIHNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAor
ICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhEb2N1bWVudCosIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKKwogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNl
cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgYWxsb3dSb3Vu
ZGluZ0hhY2tzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
NmRjNzVjZDAxYWU5YmU5YmZlOTFjN2EwZGI4OTk0ZTRjZDU2YThhYy4uYTkxOWZmMjFjMDdlNGNk
YjAxMjlkMmEwY2I0Zjc4MTJjODY5MmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtMTY2LDYgKzE2Niw3IEBACiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChp
biBEb2N1bWVudCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykg
cmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAg
IERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhpbiBEb2N1bWVudCBkb2N1bWVu
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0Fz
VGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi5kZWYuaW4KaW5kZXggMjViOTk5ZmIyNzU1ZjRlM2M0MzI3ZjA5ZWQ3ODdk
NWExNmE1ZjAwMy4uNDkzMDczMzk5N2ZmOGZkMThiMTI0MWI1ZmRhZjg3Y2RjN2EwNmQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgpAQCAtMTAsMzczICsxMCwzIEBAIEVYUE9SVFMKICAg
ICAgICAgcHJvZ0lERm9yQ2xhc3MKICAgICAgICAgV2ViTG9jYWxpemVkU3RyaW5nVVRGOAogICAg
ICAgICBXZWJMb2NhbGl6ZWRMUENUU1RSVVRGOAotI2lmIFVTRShDRykKLSAgICAgICAgV2ViRHJh
d1RleHQKLSAgICAgICAgRm9udE1ldHJpY3MKLSAgICAgICAgVGV4dEZsb2F0V2lkdGgKLSAgICAg
ICAgQ2VudGVyVHJ1bmNhdGVTdHJpbmdUb1dpZHRoCi0gICAgICAgIFJpZ2h0VHJ1bmNhdGVTdHJp
bmdUb1dpZHRoCi0gICAgICAgIFdlYktpdFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcKLSAgICAg
ICAgV2ViS2l0U2hvdWxkVXNlRm9udFNtb290aGluZwotI2VuZGlmCi0gICAgICAgIFdlYktpdENy
ZWF0ZUluc3RhbmNlCi0KLSAgICAgICAgOyBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQK
LSAgICAgICAgV2ViTG9jYWxpemVkU3RyaW5nCi0gICAgICAgIFdlYkxvY2FsaXplZExQQ1RTVFIK
LSAgICAgICAgU2V0V2ViTG9jYWxpemVkU3RyaW5nTWFpbkJ1bmRsZQotCi0gICAgICAgIDsgRGVw
cmVjYXRlZCByZS1leHBvcnRzIGZyb20gSmF2YVNjcmlwdENvcmUKLSAgICAgICAgSlNDaGVja1Nj
cmlwdFN5bnRheAotICAgICAgICBKU0NsYXNzQ3JlYXRlCi0gICAgICAgIEpTQ2xhc3NSZWxlYXNl
Ci0gICAgICAgIEpTQ2xhc3NSZXRhaW4KLSAgICAgICAgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0
Ci0gICAgICAgIEpTQ29udGV4dEdldEdyb3VwCi0gICAgICAgIEpTQ29udGV4dEdyb3VwQ3JlYXRl
Ci0gICAgICAgIEpTQ29udGV4dEdyb3VwUmVsZWFzZQotICAgICAgICBKU0NvbnRleHRHcm91cFJl
dGFpbgotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0Ci0gICAgICAgIEpTR2FyYmFnZUNvbGxlY3QK
LSAgICAgICAgSlNHbG9iYWxDb250ZXh0Q3JlYXRlCi0gICAgICAgIEpTR2xvYmFsQ29udGV4dENy
ZWF0ZUluR3JvdXAKLSAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZQotICAgICAgICBKU0ds
b2JhbENvbnRleHRSZXRhaW4KLSAgICAgICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcgotICAg
ICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uCi0gICAgICAgIEpTT2JqZWN0Q29weVByb3BlcnR5
TmFtZXMKLSAgICAgICAgSlNPYmplY3REZWxldGVQcm9wZXJ0eQotICAgICAgICBKU09iamVjdEdl
dFByaXZhdGUKLSAgICAgICAgSlNPYmplY3RHZXRQcm9wZXJ0eQotICAgICAgICBKU09iamVjdEdl
dFByb3BlcnR5QXRJbmRleAotICAgICAgICBKU09iamVjdEdldFByb3RvdHlwZQotICAgICAgICBK
U09iamVjdEhhc1Byb3BlcnR5Ci0gICAgICAgIEpTT2JqZWN0SXNDb25zdHJ1Y3RvcgotICAgICAg
ICBKU09iamVjdElzRnVuY3Rpb24KLSAgICAgICAgSlNPYmplY3RNYWtlCi0gICAgICAgIEpTT2Jq
ZWN0TWFrZUFycmF5Ci0gICAgICAgIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yCi0gICAgICAgIEpT
T2JqZWN0TWFrZURhdGUKLSAgICAgICAgSlNPYmplY3RNYWtlRXJyb3IKLSAgICAgICAgSlNPYmpl
Y3RNYWtlRnVuY3Rpb24KLSAgICAgICAgSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2sK
LSAgICAgICAgSlNPYmplY3RNYWtlUmVnRXhwCi0gICAgICAgIEpTT2JqZWN0U2V0UHJpdmF0ZQot
ICAgICAgICBKU09iamVjdFNldFByb3BlcnR5Ci0gICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlB
dEluZGV4Ci0gICAgICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlCi0gICAgICAgIEpTUHJvcGVydHlO
YW1lQWNjdW11bGF0b3JBZGROYW1lCi0gICAgICAgIEpTUHJvcGVydHlOYW1lQXJyYXlHZXRDb3Vu
dAotICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5R2V0TmFtZUF0SW5kZXgKLSAgICAgICAgSlNQ
cm9wZXJ0eU5hbWVBcnJheVJlbGVhc2UKLSAgICAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJldGFp
bgotICAgICAgICBKU1N0cmluZ0NvcHlCU1RSCi0gICAgICAgIEpTU3RyaW5nQ29weUNGU3RyaW5n
Ci0gICAgICAgIEpTU3RyaW5nQ3JlYXRlV2l0aEJTVFIKLSAgICAgICAgSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcKLSAgICAgICAgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycwotICAgICAg
ICBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZwotICAgICAgICBKU1N0cmluZ0dldENoYXJh
Y3RlcnNQdHIKLSAgICAgICAgSlNTdHJpbmdHZXRMZW5ndGgKLSAgICAgICAgSlNTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplCi0gICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcKLSAg
ICAgICAgSlNTdHJpbmdJc0VxdWFsCi0gICAgICAgIEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcKLSAgICAgICAgSlNTdHJpbmdSZWxlYXNlCi0gICAgICAgIEpTU3RyaW5nUmV0YWluCi0gICAg
ICAgIEpTVmFsdWVHZXRUeXBlCi0gICAgICAgIEpTVmFsdWVJc0Jvb2xlYW4KLSAgICAgICAgSlNW
YWx1ZUlzRXF1YWwKLSAgICAgICAgSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yCi0gICAg
ICAgIEpTVmFsdWVJc051bGwKLSAgICAgICAgSlNWYWx1ZUlzTnVtYmVyCi0gICAgICAgIEpTVmFs
dWVJc09iamVjdAotICAgICAgICBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzCi0gICAgICAgIEpTVmFs
dWVJc1N0cmljdEVxdWFsCi0gICAgICAgIEpTVmFsdWVJc1N0cmluZwotICAgICAgICBKU1ZhbHVl
SXNVbmRlZmluZWQKLSAgICAgICAgSlNWYWx1ZU1ha2VCb29sZWFuCi0gICAgICAgIEpTVmFsdWVN
YWtlTnVsbAotICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcgotICAgICAgICBKU1ZhbHVlTWFrZVN0
cmluZwotICAgICAgICBKU1ZhbHVlTWFrZVVuZGVmaW5lZAotICAgICAgICBKU1ZhbHVlUHJvdGVj
dAotICAgICAgICBKU1ZhbHVlVG9Cb29sZWFuCi0gICAgICAgIEpTVmFsdWVUb051bWJlcgotICAg
ICAgICBKU1ZhbHVlVG9PYmplY3QKLSAgICAgICAgSlNWYWx1ZVRvU3RyaW5nQ29weQotICAgICAg
ICBKU1ZhbHVlVW5wcm90ZWN0Ci0gICAgICAgID9mYXN0TWFsbG9jQFdURkBAWUFQQVhJQFoKLSAg
ICAgICAgP2Zhc3RaZXJvZWRNYWxsb2NAV1RGQEBZQVBBWElAWgotICAgICAgICA/ZmFzdEZyZWVA
V1RGQEBZQVhQQVhAWgotICAgICAgICA/ZmFzdENhbGxvY0BXVEZAQFlBUEFYSUlAWgotICAgICAg
ICA/PzBNdXRleEBXVEZAQFFBRUBYWgotICAgICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBR
QUVAWFoKLSAgICAgICAgPz8xTXV0ZXhAV1RGQEBRQUVAWFoKLSAgICAgICAgPz8xU3RyaW5nSW1w
bEBXVEZAQFFBRUBYWgotICAgICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKLSAg
ICAgICAgP2FkZFRleHRNYXRjaE1hcmtlckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFWFBCVlJhbmdlQDJAX05AWgotICAgICAgICA/YnJvYWRjYXN0QFRocmVhZENvbmRpdGlv
bkBXVEZAQFFBRVhYWgotICAgICAgICA/Y2FsbE9uTWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhA
WjBAWgotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgID9jb25zb2xlTWVzc2FnZUFyZ3Vt
ZW50Q291bnRzQEluc3BlY3RvckNvbnNvbGVBZ2VudEBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBJ
JDBBQEBXVEZAQFhaCi0gICAgICAgID9jb3VudGVyVmFsdWVASW5zcGVjdG9yQ291bnRlcnNAV2Vi
Q29yZUBAU0FIVzRDb3VudGVyVHlwZUAxMkBAWgotICAgICAgICA/ZGlkQmVnaW5GcmFtZUltcGxA
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQENBWFBBVkluc3RydW1lbnRpbmdBZ2Vu
dHNAMkBAWgotICAgICAgICA/ZGlkQ2FuY2VsRnJhbWVJbXBsQEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkBXZWJDb3JlQEBDQVhQQVZJbnN0cnVtZW50aW5nQWdlbnRzQDJAQFoKLSNlbmRpZgotICAg
ICAgICA/Y291bnRlclZhbHVlRm9yRWxlbWVudEBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQFBB
VkVsZW1lbnRAMUBAWgotICAgICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFow
UEJEQFoKLSAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVhQQVhAWjBQQkRAWgotICAg
ICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCi0gICAgICAgID9kZXRhY2hUaHJlYWRAV1RG
QEBZQVhJQFoKLSAgICAgICAgP2luaXRpYWxpemVNYWluVGhyZWFkQFdURkBAWUFYWFoKLSAgICAg
ICAgP2luaXRpYWxpemVUaHJlYWRpbmdAV1RGQEBZQVhYWgotICAgICAgICA/aW5zdHJ1bWVudGF0
aW9uRm9yUGFnZUBXZWJDb3JlQEBZQVBBVkluc3RydW1lbnRpbmdBZ2VudHNAMUBQQVZQYWdlQDFA
QFoKLSAgICAgICAgP2lzTWFpblRocmVhZEBXVEZAQFlBX05YWgotICAgICAgICA/bG9ja0BNdXRl
eEBXVEZAQFFBRVhYWgotICAgICAgICA/bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011
dGV4QFdURkBAWUFYWFoKLSAgICAgICAgP3NpZ25hbEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVY
WFoKLSAgICAgICAgP3RpbWVkV2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVfTkFBVk11dGV4
QDJATkBaCi0gICAgICAgID90bHNLZXlDb3VudEBXVEZAQFlBQUFKWFoKLSAgICAgICAgP3Rsc0tl
eXNAV1RGQEBZQVBBS1haCi0gICAgICAgID90cnlMb2NrQE11dGV4QFdURkBAUUFFX05YWgotICAg
ICAgICA/dW5sb2NrQE11dGV4QFdURkBAUUFFWFhaCi0gICAgICAgID91bmxvY2tBdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCi0gICAgICAgID93YWl0QFRocmVhZENv
bmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCi0gICAgICAgID93YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbkBXVEZAQFlBSElAWgotICAgICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RG
QEBZQUhJUEFQQVhAWgotICAgICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFow
QFoKLQotICAgICAgICA7IFJlLWV4cG9ydHMgZnJvbSBXZWJDb3JlIGZvciB0ZXN0IGhhcm5lc3Nl
cwotICAgICAgICA/PzBOb2RlUmVuZGVyaW5nQ29udGV4dEBXZWJDb3JlQEBRQUVAUEFWTm9kZUAx
QEBaCi0gICAgICAgID8/MU5vZGVSZW5kZXJpbmdDb250ZXh0QFdlYkNvcmVAQFFBRUBYWgotICAg
ICAgICA/PzFSYW5nZUBXZWJDb3JlQEBRQUVAWFoKLSAgICAgICAgP3RvTm9kZUBXZWJDb3JlQEBZ
QVBBVk5vZGVAMUBWSlNWYWx1ZUBKU0NAQEBaCi0gICAgICAgID8/MENsaWVudFJlY3RAV2ViQ29y
ZUBAQUFFQEFCVkludFJlY3RAMUBAWgotICAgICAgICA/PzBDbGllbnRSZWN0QFdlYkNvcmVAQEFB
RUBYWgotICAgICAgICA/PzBDbGllbnRSZWN0TGlzdEBXZWJDb3JlQEBBQUVAWFoKLSAgICAgICAg
Pz8wQ2xpZW50UmVjdExpc3RAV2ViQ29yZUBAQUFFQEFCVj8kVmVjdG9yQFZGbG9hdFF1YWRAV2Vi
Q29yZUBAJDBBQEBXVEZAQEBaCi0gICAgICAgID8/MUNsaWVudFJlY3RMaXN0QFdlYkNvcmVAQFFB
RUBYWgotICAgICAgICA/PzFDdXJzb3JAV2ViQ29yZUBAUUFFQFhaCi0gICAgICAgID8/MEN1cnNv
ckBXZWJDb3JlQEBRQUVAQUJWMDFAQFoKLSAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFBCREBa
Ci0gICAgICAgID8/MFN0cmluZ0BXVEZAQFFBRUBQQl9XQFoKLSAgICAgICAgPz8wU3RyaW5nQFdU
RkBAUUFFQFBCX1dJQFoKLSAgICAgICAgPz8wU3RyaW5nQFdURkBAUUFFQFZBU0NJSUxpdGVyYWxA
MUBAWgotICAgICAgICA/PzFTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAUUFFQFhaCi0g
ICAgICAgID9hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEBSZW5kZXJPYmplY3RAV2ViQ29yZUBAUUJF
P0FWSW50UmVjdEAyQF9OQFoKLSAgICAgICAgP2Fic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zQFJlbmRlck9iamVjdEBXZWJDb3JlQEBRQkU/QVZJbnRSZWN0QDJAWFoKLSAg
ICAgICAgP2Rlc2NyaXB0aW9uQERvY3VtZW50TWFya2VyQFdlYkNvcmVAQFFCRUFCVlN0cmluZ0BX
VEZAQFhaCi0gICAgICAgID9hZGRAQXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJA
VlN0cmluZ0ltcGxAV1RGQEBAMkBQQkRAWgotICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZA
QENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJFQFoKLSAgICAgICAgP2Fk
ZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBs
QFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBaCi0gICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBX
ZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNA
UEJVQ2xhc3NJbmZvQDNAQFoKLSAgICAgICAgP2NoaWxkSXRlbVdpdGhUYXJnZXRASGlzdG9yeUl0
ZW1AV2ViQ29yZUBAUUJFUEFWMTJAQUJWU3RyaW5nQFdURkBAQFoKLSAgICAgICAgP2NyZWF0ZUBI
VE1MQ29udGVudEVsZW1lbnRAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVkhUTUxDb250ZW50
RWxlbWVudEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEBaCi0gICAgICAgID9jcmVhdGVA
UmFuZ2VAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/
JFBhc3NSZWZQdHJAVkRvY3VtZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2Vi
Q29yZUBAQDRASDFIQFoKLSAgICAgICAgP2NyZWF0ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2Vi
Q29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBA
V1RGQEBBQlZTdHJpbmdANEBAWgotICAgICAgICA/Y3JlYXRlQFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdlYkNv
cmVAQEBXVEZAQFBBVkV4ZWNTdGF0ZUBKU0NAQFZKU1ZhbHVlQDZAUEFWPyRWZWN0b3JAVj8kUmVm
UHRyQFZNZXNzYWdlUG9ydEBXZWJDb3JlQEBAV1RGQEAkMDBANEBQQVY/JFZlY3RvckBWPyRSZWZQ
dHJAVkFycmF5QnVmZmVyQFdURkBAQFdURkBAJDAwQDRAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
QDJAQFoKLSAgICAgICAgP2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVm
UHRyQFZTaGFkb3dSb290QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhAWgotICAgICAg
ICA/Y3JlYXRlRnJvbVdpcmVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdlYkNvcmVAQFNBP0FWPyRQ
YXNzUmVmUHRyQFZTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAQFdURkBAQUJWU3RyaW5n
QDRAQFoKLSAgICAgICAgP2NyZWF0ZVdyYXBwZXJAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BA
UEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2RlQDFAQFoKLSAgICAg
ICAgP2Rlc2VyaWFsaXplQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBRQUU/QVZKU1Zh
bHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDRAUEFWSlNHbG9iYWxPYmplY3RANEBQQVY/JFZlY3RvckBW
PyRSZWZQdHJAVk1lc3NhZ2VQb3J0QFdlYkNvcmVAQEBXVEZAQCQwMEBXVEZAQFc0U2VyaWFsaXph
dGlvbkVycm9yTW9kZUAyQEBaCi0gICAgICAgID9kb2N1bWVudFN0YXRlQEhpc3RvcnlJdGVtQFdl
YkNvcmVAQFFCRUFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKLSAgICAgICAg
P2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRARWxlbWVudFNoYWRvd0BXZWJDb3JlQEBR
QUVYWFoKLSAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUBQQkVAWgotICAg
ICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgotICAgICAgICA/ZXF1YWxJ
Z25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCi0gICAgICAgID9leHRl
cm5hbFJlcHJlc2VudGF0aW9uQFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAUEFWRWxlbWVudEAx
QElAWgotICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQElAWgotICAgICAg
ICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQEBaCi0gICAgICAgID9hYnNvbHV0ZUNh
cmV0Qm91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFBRT9BVkludFJlY3RAMkBYWgotICAg
ICAgICA/ZnJvbVVURjhAU3RyaW5nQFdURkBAU0E/QVYxMkBQQkVAWgotICAgICAgICA/ZnJvbVVU
RjhXaXRoTGF0aW4xRmFsbGJhY2tAU3RyaW5nQFdURkBAU0E/QVYxMkBQQkVJQFoKLSAgICAgICAg
P2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2Vi
Q29yZUBAUUFFWFhaCi0gICAgICAgID9nZXRDYWNoZWRET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQ
QVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBCVUNsYXNzSW5mb0AzQEBa
Ci0gICAgICAgID9nZXREYXRhMTZTbG93Q2FzZUBTdHJpbmdJbXBsQFdURkBAQUJFUEJfV1haCi0g
ICAgICAgID9nZXRFbGVtZW50QnlJZEBUcmVlU2NvcGVAV2ViQ29yZUBAUUJFUEFWRWxlbWVudEAy
QEFCVkF0b21pY1N0cmluZ0BXVEZAQEBaCi0gICAgICAgID9nZXRMb2NhdGlvbkFuZExlbmd0aEZy
b21SYW5nZUBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0FfTlBBVkVsZW1lbnRAMkBQQlZSYW5nZUAy
QEFBSTJAWgotICAgICAgICA/Z2V0UmVmZXJlbmNlZEZpbGVQYXRoc0BGb3JtQ29udHJvbGxlckBX
ZWJDb3JlQEBTQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQUJWMzRAQFoKLSAg
ICAgICAgP2NvdW50RWxlbWVudFNoYWRvd0BTaGFkb3dSb290QFdlYkNvcmVAQFFCRUlYWgotICAg
ICAgICA/aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnRAU2hhZG93Um9vdEBXZWJDb3JlQEBRQkVfTlha
Ci0gICAgICAgID9oYXNDb250ZW50RWxlbWVudEBTaGFkb3dSb290QFdlYkNvcmVAQFFCRV9OWFoK
LSAgICAgICAgP2lucHV0VGFnQEhUTUxOYW1lc0BXZWJDb3JlQEAzVlF1YWxpZmllZE5hbWVAMkBC
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgP2dldEhpZ2hsaWdodEBJbnNwZWN0b3JD
b250cm9sbGVyQFdlYkNvcmVAQFFCRVhQQVVIaWdobGlnaHRAMkBAWgotICAgICAgICA/aW5zdHJ1
bWVudGluZ0FnZW50c0ZvclBhZ2VASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQENB
UEFWSW5zdHJ1bWVudGluZ0FnZW50c0AyQFBBVlBhZ2VAMkBAWgotICAgICAgICA/c19mcm9udGVu
ZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQotICAgICAgICA/
PzBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFFBRUBQQVZJbnNwZWN0b3JD
b250cm9sbGVyQDFAUEFWUGFnZUAxQFY/JFBhc3NPd25QdHJAVlNldHRpbmdzQEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAQFdURkBAQFoKLSAgICAgICAgPz8xSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVAWFoKLSAgICAgICAgP2NoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFF
WElAWgotICAgICAgICA/Y29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFWFBBVkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEAyQEBaCi0gICAgICAgID9kb0Rpc3Bh
dGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlQEluc3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEFW
UGFnZUAyQEFCVlN0cmluZ0BXVEZAQEBaCi0gICAgICAgID9mcm9udGVuZExvYWRlZEBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWgotICAgICAgICA/Z2V0UHJvcGVy
dHlAU2V0dGluZ3NASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUU/QVZT
dHJpbmdAV1RGQEBBQlY0NUBAWgotICAgICAgICA/bW92ZVdpbmRvd0J5QEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWE1NQFoKLSAgICAgICAgP29wZW5Jbk5ld1RhYkBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhBQlZTdHJpbmdAV1RGQEBA
WgotICAgICAgICA/cmVxdWVzdFNldERvY2tTaWRlQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWxAV2ViQ29yZUBAVUFFWFc0RG9ja1NpZGVASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRAMkBAWgot
ICAgICAgICA/c2VuZE1lc3NhZ2VUb0JhY2tlbmRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEBXZWJDb3JlQEBVQUVYQUJWU3RyaW5nQFdURkBAQFoKLSAgICAgICAgP3NldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFY/JFBhc3NPd25Q
dHJAVkluc3BlY3RvckZyb250ZW5kQ2xpZW50QFdlYkNvcmVAQEBXVEZAQEBaCi0gICAgICAgID9z
ZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVA
QFVBRVhBQlZTdHJpbmdAV1RGQEAwQFoKLSAgICAgICAgP3dpbmRvd09iamVjdENsZWFyZWRASW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYWFoKLSAgICAgICAgP3NldFJl
c291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFsc0BJbnNwZWN0b3JDb250cm9sbGVyQFdl
YkNvcmVAQFFBRVhISEBaCi0gICAgICAgID9wcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJv
bGxlckBXZWJDb3JlQEBRQUVfTlhaCi0gICAgICAgID9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVj
dG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgotICAgICAgICA/ZGlzY29ubmVjdEZyb250
ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCi0jZW5kaWYKLSAgICAgICAg
P2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBCVk5vZGVAMUBAWgotICAgICAg
ICA/aXNDU1NFeGNsdXNpb25zRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVA
QDBfTkEKLSAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVA
QFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKLSAgICAgICAgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZK
U1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNz
UmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaCi0gICAgICAgID9sYXN0Q2hh
bmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05Y
WgotICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBA
UUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5v
ZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgotICAgICAgICA/bmV4dFNpYmxp
bmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/Zmly
c3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAg
ID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAg
ICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAg
ICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0g
ICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCi0gICAgICAgID9udW1iZXJA
U3RyaW5nQFdURkBAU0E/QVYxMkBfS0BaCi0gICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/
QVYxMkBIQFoKLSAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQElAWgotICAgICAg
ICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJATklXNFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5n
UG9saWN5QDJAQFoKLSAgICAgICAgP292ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJD
b3JlQEBZQVhBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEBaCi0gICAgICAgID9u
dW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuQE5vZGVAV2ViQ29yZUBAUUJFSVhaCi0gICAg
ICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgotICAgICAgICA/cGFn
ZU51bWJlckZvckVsZW1lbnRAUHJpbnRDb250ZXh0QFdlYkNvcmVAQFNBSFBBVkVsZW1lbnRAMkBB
QlZGbG9hdFNpemVAMkBAWgotICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdl
YkNvcmVAQEFBRVhYWgotICAgICAgICA/cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGVASFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgotICAgICAgICA/cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRy
QFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZDb250YWluZXJOb2RlQDJASEhfTkBaCi0gICAgICAg
ID9yZW1vdmVAU3RyaW5nQFdURkBAUUFFWElIQFoKLSAgICAgICAgP3JlbW92ZWRMYXN0UmVmQE5v
ZGVAV2ViQ29yZUBAQUFFWFhaCi0gICAgICAgID9yZXZlcnNlRmluZEBTdHJpbmdJbXBsQFdURkBA
UUFFSV9XSUBaCi0gICAgICAgID9zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUBIaXN0b3J5Q29u
dHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3NjcmlwdEV4ZWN1dGlvbkNvbnRleHRA
SlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAy
QFhaCi0gICAgICAgID9zY3JpcHROYW1lVG9Db2RlQFdlYkNvcmVAQFlBP0FXNFVTY3JpcHRDb2Rl
QEBBQlZTdHJpbmdAV1RGQEBAWgotICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVjdEBGcmFtZVZp
ZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKLSAgICAgICAgP3Nj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFha
Ci0gICAgICAgID9zZXRDYW5TdGFydE1lZGlhQFBhZ2VAV2ViQ29yZUBAUUFFWF9OQFoKLSAgICAg
ICAgP3NldEN1cnNpdmVGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNT
dHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgotICAgICAgICA/c2V0RGV2aWNlU2NhbGVGYWN0
b3JAUGFnZUBXZWJDb3JlQEBRQUVYTUBaCi0gICAgICAgID9zZXREb2N1bWVudFN0YXRlQEhpc3Rv
cnlJdGVtQFdlYkNvcmVAQFFBRVhBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEBa
Ci0gICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BA
SEBaCi0gICAgICAgID9zZXRGYW50YXN5Rm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVY
QUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKLSAgICAgICAgP3NldEZpeGVk
Rm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRV
U2NyaXB0Q29kZUBAQFoKLSAgICAgICAgP3NldEltYWdlc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29y
ZUBAUUFFWF9OQFoKLSAgICAgICAgP3NldE1vY2tTY3JvbGxiYXJzRW5hYmxlZEBTZXR0aW5nc0BX
ZWJDb3JlQEBTQVhfTkBaCi0gICAgICAgID9tb2NrU2Nyb2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NA
V2ViQ29yZUBAU0FfTlhaCi0gICAgICAgID9zZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnNAU2V0dGlu
Z3NAV2ViQ29yZUBAU0FYX05AWgotICAgICAgICA/c2V0UGFnZVNjYWxlRmFjdG9yQFBhZ2VAV2Vi
Q29yZUBAUUFFWE1BQlZJbnRQb2ludEAyQEBaCi0gICAgICAgID9zZXRQYWdpbmF0aW9uQFBhZ2VA
V2ViQ29yZUBAUUFFWEFCVVBhZ2luYXRpb25AMkBAWgotICAgICAgICA/c2V0UGljdG9ncmFwaEZv
bnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNj
cmlwdENvZGVAQEBaCi0gICAgICAgID9zZXRTYW5zU2VyaWZGb250RmFtaWx5QFNldHRpbmdzQFdl
YkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgotICAgICAg
ICA/c2V0U2Nyb2xsYmFyc1N1cHByZXNzZWRAU2Nyb2xsVmlld0BXZWJDb3JlQEBRQUVYX04wQFoK
LSAgICAgICAgP3NldERlbGVnYXRlc1Njcm9sbGluZ0BTY3JvbGxWaWV3QFdlYkNvcmVAQFFBRVhf
TkBaCi0gICAgICAgID9zZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzQFNjcm9sbGFibGVBcmVh
QFdlYkNvcmVAQFFBRVhBQlZJbnRQb2ludEAyQEBaCi0gICAgICAgID9zZXRTZXJpZkZvbnRGYW1p
bHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENv
ZGVAQEBaCi0gICAgICAgID9zZXRTdGFuZGFyZEZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBA
UUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCi0gICAgICAgID9zZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3lAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWFc0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5QFNlY3VyaXR5T3JpZ2luQDJAQFoKLSAgICAgICAgP3NldFN1Z2dlc3RlZFZhbHVl
QEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaCi0gICAgICAg
ID9zZXRFZGl0aW5nVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYQUJWU3RyaW5n
QFdURkBAQFoKLSAgICAgICAgP3NldFBzZXVkb0BFbGVtZW50QFdlYkNvcmVAQFFBRVhBQlZBdG9t
aWNTdHJpbmdAV1RGQEBAWgotICAgICAgICA/c2V0UmVzb2x1dGlvbk92ZXJyaWRlQFNldHRpbmdz
QFdlYkNvcmVAQFFBRVhBQlZJbnRTaXplQDJAQFoKLSAgICAgICAgP3NldE1lZGlhVHlwZU92ZXJy
aWRlQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RGQEBAWgotICAgICAgICA/c2V0
dGluZ3NARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWgotICAgICAgICA/c2V0
dGluZ3NARnJhbWVAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWgotICAgICAgICA/c2V0Rml4
ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYX05A
WgotICAgICAgICA/c2hhZG93QEVsZW1lbnRAV2ViQ29yZUBAUUJFUEFWRWxlbWVudFNoYWRvd0Ay
QFhaCi0gICAgICAgID9zdWJzdHJpbmdAU3RyaW5nQFdURkBAUUJFP0FWMTJASUlAWgotICAgICAg
ICA/c3VnZ2VzdGVkVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQkVBQlZTdHJpbmdA
V1RGQEBYWgotICAgICAgICA/dGFyZ2V0QEhpc3RvcnlJdGVtQFdlYkNvcmVAQFFCRUFCVlN0cmlu
Z0BXVEZAQFhaCi0gICAgICAgID90ZXh0QFJhbmdlQFdlYkNvcmVAQFFCRT9BVlN0cmluZ0BXVEZA
QFhaCi0gICAgICAgID90ZXh0Q29udGVudEBOb2RlQFdlYkNvcmVAQFFCRT9BVlN0cmluZ0BXVEZA
QF9OQFoKLSAgICAgICAgP3RvRG9jdW1lbnRAV2ViQ29yZUBAWUFQQVZEb2N1bWVudEAxQFZKU1Zh
bHVlQEpTQ0BAQFoKLSAgICAgICAgP3RvQXJyYXlCdWZmZXJAV2ViQ29yZUBAWUFQQVZBcnJheUJ1
ZmZlckBXVEZAQFZKU1ZhbHVlQEpTQ0BAQFoKLSAgICAgICAgP3RvRE9NU3RyaW5nTGlzdEBXZWJD
b3JlQEBZQT9BVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBQQVZF
eGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA1QEBaCi0gICAgICAgID90b0VsZW1lbnRAV2ViQ29yZUBA
WUFQQVZFbGVtZW50QDFAVkpTVmFsdWVASlNDQEBAWgotICAgICAgICA/dG9KU0BXZWJDb3JlQEBZ
QT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBB
VkFycmF5QnVmZmVyQFdURkBAQFoKLSAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVl
QEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZDbGllbnRSZWN0
QDFAQFoKLSAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0
YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZDbGllbnRSZWN0TGlzdEAxQEBaCi0gICAg
ICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpT
RE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAxQEBaCi0gICAgICAgID90b0pTQFdlYkNvcmVAQFlB
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFW
UmFuZ2VAMUBAWgotICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZF
eGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVk5vZGVMaXN0QDFAQFoKLSAgICAg
ICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKLSAgICAg
ICAgP3RvU3RyaW5nQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdA
V1RGQEBYWgotICAgICAgICA/dG9XaXJlU3RyaW5nQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJD
b3JlQEBRQkU/QVZTdHJpbmdAV1RGQEBYWgotICAgICAgICA/dHJlZVNjb3BlQE5vZGVAV2ViQ29y
ZUBAUUJFUEFWVHJlZVNjb3BlQDJAWFoKLSAgICAgICAgP3VwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3VzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBX
VEZAQFhaCi0gICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBXNENvbnZl
cnNpb25Nb2RlQDEyQEBaCi0gICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZy
YW1lVmlld0AyQFhaCi0gICAgICAgID8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNv
cmVAQE1BRUBYWgotICAgICAgICA/Y29udGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKLSAgICAgICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXJAV2ViQ29yZUBAUUFFQFBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAg
ICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5v
ZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMEBaCi0gICAgICAgID9zZWxlY3Rpb25TdGFy
dEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRN
YXJrZXJAMkBISEBaCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAgICA/d2Via2l0
V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVs
ZW1lbnRAMkBAWgotICAgICAgICA/d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBE
b2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCi0gICAgICAgID93ZWJraXRXaWxs
RXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50
QDJAQFoKLSAgICAgICAgP3dlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVu
dEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCi0jZW5kaWYKLSAgICAgICAgP3Jlc3RyaWN0
U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlQFdlYkNvcmVAQFlBWEFB
VVZpZXdwb3J0QXR0cmlidXRlc0AxQEBaCi0gICAgICAgID9yZXN0cmljdE1pbmltdW1TY2FsZUZh
Y3RvclRvVmlld3BvcnRTaXplQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQFZJ
bnRTaXplQDFATUBaCi0gICAgICAgID9jb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVA
QFlBP0FVVmlld3BvcnRBdHRyaWJ1dGVzQDFAVVZpZXdwb3J0QXJndW1lbnRzQDFASEhITVZJbnRT
aXplQDFAQFoKLSAgICAgICAgP3ZpZXdwb3J0QXJndW1lbnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FV
Vmlld3BvcnRBcmd1bWVudHNAMkBYWgotICAgICAgICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVu
dEBXZWJDb3JlQEBRQUVfTkhAWgotICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2Vi
Q29yZUBAUUJFX05YWgotICAgICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJv
bGxlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9u
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFj
a3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCi0gICAgICAgID9qc1N0cmluZ1dpdGhDYWNoZVNs
b3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFz
aE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVPyRQ
dHJIYXNoQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxA
V1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdU
RkBAUEFWU3RyaW5nSW1wbEA2QEBaCi0gICAgICAgID9yZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNz
aW5nQ29udGVudFNlY3VyaXR5UG9saWN5QFNjaGVtZVJlZ2lzdHJ5QFdlYkNvcmVAQFNBWEFCVlN0
cmluZ0BXVEZAQEBaCi0gICAgICAgID9yZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3Np
bmdDb250ZW50U2VjdXJpdHlQb2xpY3lAU2NoZW1lUmVnaXN0cnlAV2ViQ29yZUBAU0FYQUJWU3Ry
aW5nQFdURkBAQFoKLSAgICAgICAgP2ljb25VUkxzQERvY3VtZW50QFdlYkNvcmVAQFFBRUFCVj8k
VmVjdG9yQFVJY29uVVJMQFdlYkNvcmVAQCQwQUBAV1RGQEBYWgotICAgICAgICA/bnVtYmVyT2ZQ
YWdlc0BQcmludENvbnRleHRAV2ViQ29yZUBAU0FIUEFWRnJhbWVAMkBBQlZGbG9hdFNpemVAMkBA
WgotICAgICAgICA/cGFnZVByb3BlcnR5QFByaW50Q29udGV4dEBXZWJDb3JlQEBTQT9BVlN0cmlu
Z0BXVEZAQFBBVkZyYW1lQDJAUEJESEBaCi0gICAgICAgID9wYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVsc0BQcmludENvbnRleHRAV2ViQ29yZUBAU0E/QVZTdHJpbmdAV1RGQEBQQVZGcmFtZUAyQEhI
SEhISEhAWgotICAgICAgICA/Y2xvc2VARE9NV2luZG93QFdlYkNvcmVAQFFBRVhQQVZTY3JpcHRF
eGVjdXRpb25Db250ZXh0QDJAQFoKLSAgICAgICAgP2RvY3VtZW50QERPTVdpbmRvd0BXZWJDb3Jl
QEBRQkVQQVZEb2N1bWVudEAyQFhaCi0gICAgICAgID9vcGVuQERPTVdpbmRvd0BXZWJDb3JlQEBR
QUU/QVY/JFBhc3NSZWZQdHJAVkRPTVdpbmRvd0BXZWJDb3JlQEBAV1RGQEBBQlZTdHJpbmdANEBB
QlZBdG9taWNTdHJpbmdANEAwUEFWMTJAMkBaCi0gICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FW
SlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWRE9N
V2luZG93QDFAQFoKLSAgICAgICAgP2xheWVyVHJlZUFzVGV4dEBGcmFtZUBXZWJDb3JlQEBRQkU/
QVZTdHJpbmdAV1RGQEBJQFoKLSAgICAgICAgP3RyYWNrZWRSZXBhaW50UmVjdHNBc1RleHRARnJh
bWVAV2ViQ29yZUBAUUJFP0FWU3RyaW5nQFdURkBAWFoKLSAgICAgICAgP3NldFRyYWNrc1JlcGFp
bnRzQEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYX05AWgotICAgICAgICA/PzFCaXRtYXBJbWFnZUBX
ZWJDb3JlQEBVQUVAWFoKLSAgICAgICAgPz8wQml0bWFwSW1hZ2VAV2ViQ29yZUBASUFFQFBBVklt
YWdlT2JzZXJ2ZXJAMUBAWgotICAgICAgICA/aXNCaXRtYXBJbWFnZUBCaXRtYXBJbWFnZUBXZWJD
b3JlQEBVQkVfTlhaCi0gICAgICAgID9jdXJyZW50RnJhbWVIYXNBbHBoYUBCaXRtYXBJbWFnZUBX
ZWJDb3JlQEBVQUVfTlhaCi0gICAgICAgID9oYXNTaW5nbGVTZWN1cml0eU9yaWdpbkBCaXRtYXBJ
bWFnZUBXZWJDb3JlQEBVQkVfTlhaCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICA/bm90
U29saWRDb2xvckBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaIAotI2VuZGlmCi0gICAgICAg
ID9jb21wdXRlSW50cmluc2ljRGltZW5zaW9uc0BJbWFnZUBXZWJDb3JlQEBVQUVYQUFVTGVuZ3Ro
QDJAMEFBVkZsb2F0U2l6ZUAyQEBaCi0gICAgICAgID9zaXplQEJpdG1hcEltYWdlQFdlYkNvcmVA
QFVCRT9BVkludFNpemVAMkBYWgotICAgICAgICA/Z2V0SG90U3BvdEBCaXRtYXBJbWFnZUBXZWJD
b3JlQEBVQkVfTkFBVkludFBvaW50QDJAQFoKLSAgICAgICAgP2RhdGFDaGFuZ2VkQEJpdG1hcElt
YWdlQFdlYkNvcmVAQFVBRV9OX05AWgotICAgICAgICA/ZmlsZW5hbWVFeHRlbnNpb25AQml0bWFw
SW1hZ2VAV2ViQ29yZUBAVUJFP0FWU3RyaW5nQFdURkBAWFoKLSAgICAgICAgP2Rlc3Ryb3lEZWNv
ZGVkRGF0YUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYX05AWgotICAgICAgICA/ZGVjb2RlZFNp
emVAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUJFSVhaCi0gICAgICAgID9zdGFydEFuaW1hdGlvbkBC
aXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYX05AWgotICAgICAgICA/c3RvcEFuaW1hdGlvbkBCaXRt
YXBJbWFnZUBXZWJDb3JlQEBVQUVYWFoKLSAgICAgICAgP3Jlc2V0QW5pbWF0aW9uQEJpdG1hcElt
YWdlQFdlYkNvcmVAQFVBRVhYWgotI2lmIFVTRShDRykKLSAgICAgICAgP25hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRVBBVUNHSW1hZ2VAQFhaCi0gICAg
ICAgID9nZXRDR0ltYWdlUmVmQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRVBBVUNHSW1hZ2VAQFha
Ci0gICAgICAgID9nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemVAQml0bWFwSW1hZ2VAV2ViQ29yZUBA
VUFFUEFVQ0dJbWFnZUBAQUJWSW50U2l6ZUAyQEBaCi0gICAgICAgID9nZXRDR0ltYWdlQXJyYXlA
Qml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFP0FWPyRSZXRhaW5QdHJAUEJVX19DRkFycmF5QEBAV1RG
QEBYWgotI2VsaWYgVVNFKENBSVJPKQotICAgICAgICA/bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWVAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFUEFWTmF0aXZlSW1hZ2VDYWlyb0AyQFhaCi0gICAg
ICAgID9mcmFtZUF0SW5kZXhAQml0bWFwSW1hZ2VAV2ViQ29yZUBASUFFUEFWTmF0aXZlSW1hZ2VD
YWlyb0AyQElAWgotI2VuZGlmCi0gICAgICAgID9nZXRIQklUTUFQQEJpdG1hcEltYWdlQFdlYkNv
cmVAQFVBRV9OUEFVSEJJVE1BUF9fQEBAWgotICAgICAgICA/Z2V0SEJJVE1BUE9mU2l6ZUBCaXRt
YXBJbWFnZUBXZWJDb3JlQEBVQUVfTlBBVUhCSVRNQVBfX0BAUEFVdGFnU0laRUBAQFoKLSAgICAg
ICAgP2RyYXdQYXR0ZXJuQEltYWdlQFdlYkNvcmVAQFVBRVhQQVZHcmFwaGljc0NvbnRleHRAMkBB
QlZGbG9hdFJlY3RAMkBBQlZBZmZpbmVUcmFuc2Zvcm1AMkBBQlZGbG9hdFBvaW50QDJAVzRDb2xv
clNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQDFAWgotICAgICAgICA/cmVwb3J0TWVtb3J5
VXNhZ2VAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUJFWFBBVk1lbW9yeU9iamVjdEluZm9AV1RGQEBA
WgotICAgICAgICA/ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplQEJpdG1hcEltYWdlQFdlYkNv
cmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkBBQlZJbnRTaXplQDJA
VzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQEBaCi0gICAgICAgID9kcmF3QElt
YWdlQFdlYkNvcmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRD
b2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtQDJAQFoKLSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdy
YXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0
ZU9wZXJhdG9yQDJAQFoKLSAgICAgICAgP21heUZpbGxXaXRoU29saWRDb2xvckBCaXRtYXBJbWFn
ZUBXZWJDb3JlQEBNQUVfTlhaCi0gICAgICAgID9zb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNv
cmVAQE1CRT9BVkNvbG9yQDJAWFoKLSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBA
TUFFWFBBVkdyYXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBX
NENvbXBvc2l0ZU9wZXJhdG9yQDJAVzRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW1AMkBAWgot
ICAgICAgICA/ZnJhbWVDb3VudEBCaXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVJWFoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyRXhwb3J0R2VuZXJhdG9yUHJlQnVpbGQuY21k
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJFeHBvcnRHZW5lcmF0b3JQcmVCdWlsZC5jbWQK
aW5kZXggMDJmM2QxODdjZjZhYzhkZmFhNTc1NWU5NTQ0OTU3MDJiYTM4MTVjZi4uZjg5OTAyMzE1
ZTAxZDYyODk2ZjA5Y2RiOGQwMDlkZWU2YjJhYzVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJFeHBvcnRHZW5lcmF0b3JQcmVCdWlsZC5jbWQKKysrIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJFeHBvcnRHZW5lcmF0b3JQcmVCdWlsZC5jbWQKQEAgLTEsMTMgKzEs
MTYgQEAKK2VjaG8gdGVzdDExMQogJVN5c3RlbURyaXZlJVxjeWd3aW5cYmluXHdoaWNoLmV4ZSBi
YXNoCiBpZiBlcnJvcmxldmVsIDEgc2V0IFBBVEg9JVN5c3RlbURyaXZlJVxjeWd3aW5cYmluOyVQ
QVRIJQogY21kIC9jCitlY2hvIHRlc3QyMjIKIGlmIGV4aXN0ICIlQ09ORklHVVJBVElPTkJVSUxE
RElSJVxidWlsZGZhaWxlZCIgZ3JlcCBYWCVQUk9KRUNUTkFNRSVYWCAiJUNPTkZJR1VSQVRJT05C
VUlMRERJUiVcYnVpbGRmYWlsZWQiCiBpZiBlcnJvcmxldmVsIDEgZXhpdCAxCiBlY2hvIFhYJVBS
T0pFQ1ROQU1FJVhYID4gIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGJ1aWxkZmFpbGVkIgogCitl
Y2hvIHRlc3QzMzMKIHNldCBHZW5lcmF0b3JEaXJlY3Rvcnk9JUNPTkZJR1VSQVRJT05CVUlMRERJ
UiUvb2JqL1dlYktpdDJFeHBvcnRHZW5lcmF0b3IKIG1rZGlyICIlR2VuZXJhdG9yRGlyZWN0b3J5
JSIgMj5OVUwKIG1rZGlyICIlR2VuZXJhdG9yRGlyZWN0b3J5JVxEZXJpdmVkU291cmNlcyIgMj5O
VUwKIAogZWNobyBHZW5lcmF0aW5nIGV4cG9ydCBkZWZpbml0aW9ucwotYmFzaCAtYyAiLi4vLi4v
V2ViQ29yZS9tYWtlLWV4cG9ydC1maWxlLWdlbmVyYXRvciAuL1dlYktpdDIuZGVmLmluICclR2Vu
ZXJhdG9yRGlyZWN0b3J5JS9EZXJpdmVkU291cmNlcy9XZWJLaXQyRXhwb3J0R2VuZXJhdG9yLmNw
cCciClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorYmFzaCAtYyAiLi4vLi4vV2ViQ29yZS9t
YWtlLWV4cG9ydC1maWxlLWdlbmVyYXRvciAuL1dlYktpdDIuZGVmLmluICclR2VuZXJhdG9yRGly
ZWN0b3J5JS9EZXJpdmVkU291cmNlcy9XZWJLaXQyRXhwb3J0R2VuZXJhdG9yLmNwcCciCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgppbmRleCA4ZDA0ZTYwNzljMDVlOTc4MTE5OWQyNTMzZTA2MTBmOTBm
ZGU5YjU4Li5jNzI3NTUxM2Y5YWEwOGQxYjA2MjNmYzQ1ZmY0MGFiZmJhMDkzNzZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKQEAgLTMxLDYgKzMxLDcgQEAgX1pON1dlYkNvcmU0UGFnZTEzc2V0
UGFnaW5hdGlvbkVSS05TXzEwUGFnaW5hdGlvbkU7CiBfWk43V2ViQ29yZTRQYWdlMThzZXRQYWdl
U2NhbGVGYWN0b3JFZlJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlNFBhZ2UyMHNldERldmlj
ZVNjYWxlRmFjdG9yRWY7CiBfWk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1Rl
eHRFdjsKK19aTjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0
RXY7CiBfWk43V2ViQ29yZTRQYWdlMTZzZXRDYW5TdGFydE1lZGlhRWI7CiBfWk43V2ViQ29yZTR0
b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50
UmVjdEU7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9i
YWxPYmplY3RFUE5TXzEwU2hhZG93Um9vdEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzUzMDgxNjJiZTZlMzMyMTVmYjUw
MWExN2JiZjRkMzM5ZWQ3YWVmZS4uNmUxODE0ZGUwOGFmMjZiNjk5YzU4M2FiNzJkZDgzNTczNjE3
NDY3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEyLTAzICBYaWFuemh1IFdhbmcgIDx3
YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9m
LXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkL21vZGlmaWVkIHRlc3QgdG8gZW5zdXJlIHNsb3ct
c2Nyb2xsaW5nIGlzIG5vdCB0cmlnZ2VyZWQgYnkgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25l
ZCBlbGVtZW50cywKKyAgICAgICAgYW5kIGVuc3VyZSBvdXQtb2YtdmlldyBjaGVja2luZyBpcyBj
b3JyZWN0IHdoZW4gcGFnZSBpcyBzY2FsZWQuCisKKyAgICAgICAgQlRXLCBmaXhlZCBzb21lIHRl
c3RzIHRoYXQgc2V0IGVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbiBpbiBvbmxvYWQg
aGFuZGxlciB3aGljaCBtYXkgbm90IHRha2UgZWZmZWN0IGJlY2F1c2UgaXQgaXMgdG9vIGxhdGUu
CisgICAgICAgIExlYXZlIHRoZSBpbWFnZSBtaXNtYXRjaGVzIHRvIGJ1ZyA5NjgzOS4KKworICAg
ICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS1kb3duLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sOgorICAgICAgICAqIGNv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5o
dG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFt
ZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRt
bDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zv
cm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxl
Lmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29t
cG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVk
LXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWw6IEVuc3VyZSBzbG93LXNjcm9sbGluZyBpcyBub3Qg
dHJpZ2dlcmVkLiBFeHBlY3RhdGlvbiBpcyB1bmNoYW5nZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IFVwZGF0
ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2YgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMu
CisKIDIwMTItMTItMDQgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgbWF0aG1sIHJlYmFzZWxpbmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2Nh
bGUtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9z
aXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRleCA3OWU0MjYxOGY1ZDU0
MjJlOTAzNWUzNWE1MDI5YTAwNjI3NDdmMTFkLi5mYmIxNzVmZDZmZWM4YTdiMjg2NWRlNGJmMjBm
ZDExY2FlOTYxNzZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS1kb3duLmh0bWwKQEAgLTMsMjcgKzMsMjUgQEAKIDxoZWFkPgogPHN0eWxlPgog
LmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9CiAuZml4ZWQtd2l0
aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBsZWZ0OiAx
MHB4OworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEw
cHg7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93Lmlu
dGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwotICB9
CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Cit9CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8
L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdo
dDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgog
PGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9
ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1w
YWdlLXNjYWxlLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkv
Zml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLXNjcm9sbC5odG1sCmluZGV4IDQ1
MmQxZGIzMDEwNzZjZGRmMjYyNmFmMzQ4ZGU5MTBjZjFiZWI0MjUuLjhhYWZiMjIwYzA2MzUwOThl
YThiZTgyZjA3MmY5ZGQ2YjNkMjdhOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwKQEAgLTMsMjkgKzMsMjcgQEAKIDxo
ZWFkPgogPHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7
Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7
CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4
OiAxOwotICBsZWZ0OiAxMHB4OwotICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOwor
ICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7Cisg
ICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0
PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVk
UG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3Rv
cigyLCAwLCAwKTsKLSAgICB9Ci0gICAgd2luZG93LnNjcm9sbFRvKDEwMCwxMDApOwotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICB9
CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOworfQord2luZG93LnNjcm9sbFRv
KDEwMCwxMDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHls
ZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAw
cHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VGhpcyB0
ZXN0IHNob3VsZCBub3QgaGl0IGFuIGFzc2VydGlvbiBpbiBSZW5kZXJHZW9tZXRyeU1hcCBpbiBk
ZWJ1ZyBidWlsZHM8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRo
aXMgdGVzdCBzaG91bGQgbm90IGhpdCBhbiBhc3NlcnRpb24gaW4gUmVuZGVyR2VvbWV0cnlNYXAg
aW4gZGVidWcgYnVpbGRzPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUu
aHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGZjNjM2NTIwZjk0NzE2ODYzOWZmOTVkOTE2
MTIyZjM3MDE2NzlkYTAuLjZmMmY3MjI1NmNlODRjYzMzY2M5YWEwYjJlMGRmMzE0NDJkYWUxNDAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCkBA
IC0zLDI3ICszLDI1IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsKLSAg
cG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICBsZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9u
OiBmaXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogZml4
ZWQ7CisgICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OwogfQogPC9zdHlsZT4KIDxzY3Jp
cHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0g
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4
ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFj
dG9yKDIsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gIH0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZp
eGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0
b3IoMiwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNjYWxl
KCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0eWxlPSJ3
aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8tei1pbmRl
eCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgtei1pbmRleCI+VEVTVDwv
ZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUt
Y29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAppbmRleCBjNWFkNDZjOWE2ZDhmNDNiNDQy
YTk2NzYwZWRkZGY5NmE4OTM1YzhjLi45ZjQ2YmRhNDlhZDQ5YmQ0ODhlMDRmMDE0ZGEwZGZjZmRm
Zjc2MzlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29t
cG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbApAQCAtMywyOCArMywyOCBAQAogPGhlYWQ+CiA8
c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVm
dDogMTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBweDsKIH0KIC5m
aXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6IDE7Ci0g
IGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAg
bGVmdDogMTBweDsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiB0ZXN0KCkgewot
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0gICAgfQotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93
LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKK30KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKK2Z1bmN0aW9u
IHRlc3QoKSB7CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUnKS5j
b250ZW50RG9jdW1lbnQub3BlbigpOwogICAgIGQud3JpdGUoIjxkaXYgc3R5bGU9J3Bvc2l0aW9u
OmZpeGVkOyB6LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVTVDwvZGl2PiIpOwogICAgIGQuY2xv
c2UoKTsKLSAgfQorfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InRlc3QoKTsi
IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0
ZWQtcGFnZS1zY2FsZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4
ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGU3OWI5
ZjJhZWIwOWNiYzdhMjllOTAxNDE5ZDIwYzA3NTcyZDE1ZGYuLjI5YThjM2EyMWQ1MDBmNTEzMWRk
OGY0Y2ZjNmNiODlmYWUzZjQ4NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1p
ZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTMsMjggKzMsMjggQEAKIDxoZWFk
PgogPHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0g
IGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9
CiAuZml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAx
OwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOwor
ICAgIGxlZnQ6IDEwcHg7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gdGVzdCgp
IHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9Ci0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRy
dWUpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKK30KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiAKK2Z1bmN0aW9u
IHRlc3QoKSB7CiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUnKS5j
b250ZW50RG9jdW1lbnQub3BlbigpOwogICAgIGQud3JpdGUoIjxkaXYgc3R5bGU9J3Bvc2l0aW9u
OmZpeGVkOyB6LWluZGV4OiAxOyBsZWZ0OyAxMHB4Oyc+VEVTVDwvZGl2PiIpOwogICAgIGQuY2xv
c2UoKTsKLSAgfQorfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InRlc3QoKTsi
IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24u
aHRtbAppbmRleCA2YzE3Zjk2ZWUwODBlN2EzM2M3M2M1MDhhNDRmNzEzM2E5ZTg4ZmY0Li4xNTBh
MWEyMzIzNTg0ZmMwZTM4ZmMzMWVmYTU5YmY2MzY5MDAxY2E1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9z
aXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRv
d24uaHRtbApAQCAtMywyOSArMywyNyBAQAogPGhlYWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1p
bmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMTBweDsKLSAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgbGVmdDogMTBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNs
YXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBv
c2l0aW9uOiBmaXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKLSAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKKyAgICBwb3NpdGlvbjog
Zml4ZWQ7CisgICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OworICAgIC13ZWJraXQtdHJh
bnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7CiB9CiA8L3N0eWxlPgogPHNj
cmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
LSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JG
aXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVG
YWN0b3IoMC41LCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwotICB9CitpZiAod2luZG93LmludGVybmFs
cykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdG
b3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxl
RmFjdG9yKDAuNSwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KKzxib2R5IHN0
eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBjbGFzcz0iZml4ZWQtbm8t
ei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdpdGgtei1pbmRleCI+
VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Z2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5o
dG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJh
bnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sCmluZGV4IGY5YTBjMzczODczZjk1ZTRm
MmE1Yzc3ZmZkMTNkOGY0NmViZTJjNmQuLjU3ZjcyZTNkMTkzMjc4Mjc0OWIwNmM1MDQwNTkwZTYy
MmI4MzZjZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2Zp
eGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0t
Y29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKQEAgLTMsMjkgKzMsMjcgQEAKIDxoZWFkPgogPHN0
eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6
IDEwcHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRl
Zyk7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CisgICAgLXdlYmtp
dC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKIH0KIC5maXhlZC13
aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6IDE7Ci0gIGxlZnQ6
IDEwcHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRl
Zyk7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAgbGVmdDogMTBw
eDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcp
OwogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVu
YWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gIH0KK2lm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRF
bmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVy
bmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+
Ci08Ym9keSBvbmxvYWQ9InNjYWxlKCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAw
cHg7Ij4KKzxib2R5IHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgogPGRpdiBj
bGFzcz0iZml4ZWQtbm8tei1pbmRleCI+VEVTVDwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVk
LXdpdGgtei1pbmRleCI+VEVTVDwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXct
c2NhbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0
aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDUzNzY2NTQ4MjlkY2JiY2Q5ZGY4ZDJiZTJiMmMwMTYxMDYzZTYxYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBv
c2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2MyBAQAor
Tm90IHNjYWxlZDoKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisg
IChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgNzg1LjAwIDEw
MTYuMDApCisgICAgICAoY2hpbGRyZW4gMgorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
ICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAw
KQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAx
MC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorU2NhbGU9MC41
OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA0MDAuMDAgNTA4LjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgICAgIChi
b3VuZHMgODAwLjAwIDEwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFswLjUwIDAuMDAgMC4wMCAw
LjAwXSBbMC4wMCAwLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAu
MDAgMC4wMCAxLjAwXSkKKyAgICAgIChjaGlsZHJlbiA0CisgICAgICAgIChHcmFwaGljc0xheWVy
CisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgMTAwOC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEw
LjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAg
KHBvc2l0aW9uIDEwMDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQor
ICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDYw
MC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAg
ICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAg
ICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2FsZT0xLjU6CisoR3JhcGhpY3NMYXll
cgorICAoYm91bmRzIDEyNzIuMDAgMTUyNC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhp
Y3NMYXllcgorICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRzIDg0OC4wMCAx
MDE2LjAwKQorICAgICAgKHRyYW5zZm9ybSBbMS41MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS41
MCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0p
CisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChi
b3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQt
cG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNjMzZDdjZGRkOGUxMTgwMjQzMDQxYmEyNjJlODkwMTVhN2MzZWIzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmZpeGVkIHsKKyAgICBwb3Np
dGlvbjogZml4ZWQ7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4OworfQorPC9z
dHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdpbmRvdy5pbnRl
cm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJlZSIpLmlubmVyVGV4dCA9IGludGVybmFs
cy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMu
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgIGludGVybmFs
cy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVyVHJl
ZVNjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3Vt
ZW50KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29uc1NjYWxlZERvd24iKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
UGFnZVNjYWxlRmFjdG9yKDEuNSwgMCwgMCk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVy
VHJlZVNjYWxlZFVwIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1
bWVudCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworCisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSwgMCk7Cisg
ICAgfSwgZmFsc2UpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBzdHls
ZT0iaGVpZ2h0OiAxMDAwcHgiPgorICAgIE5vdCBzY2FsZWQ6CisgICAgPHByZSBpZD0ibGF5ZXJU
cmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9w
cmU+CisgICAgU2NhbGU9MC41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZERvd24iPjwv
cHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkRG93biI+
PC9wcmU+CisgICAgU2NhbGU9MS41OgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZVNjYWxlZFVwIj48
L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZFVwIj48
L3ByZT4KKzwvZGl2PgorCis8IS0tIE5vIGxheWVyIGluIGFueSBjYXNlLiAtLT4KKzxkaXYgY2xh
c3M9ImZpeGVkIiBzdHlsZT0idG9wOiAtMTAwcHgiPjwvZGl2PgorCis8IS0tIEhhcyBjb21wb3Np
dGVkIGxheWVyIHdoZW4gc2NhbGVkIGRvd247IG5vIGxheWVyIHdoZW4gbm90IHNjYWxlZCBvciBz
Y2FsZWQgdXAuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZml4
ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KKworPCEtLSBIYXMgY29t
cG9zaXRlZCBsYXllciB3aGVuIG5vdCBzY2FsZWQgYW5kIHNjYWxlZCBkb3duOyBubyBsYXllciBz
Y2FsZWQgdXAuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDog
NjAwcHgiPjwvZGl2PgorCis8IS0tIEFsd2F5cyBoYXMgY29tcG9zaXRlZCBsYXllci4gLS0+Cis8
ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0OiAwcHgiPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRt
bAppbmRleCBjMmY2ZTQ5MjAzMDNkMTY4ZTNhMGUxMGIzNjYwMzc4ZTAwOWY5ZWRiLi41MjY3MThh
YmQwNDMzOTUyNzBiNWQ3MGQ4YjZkMjNlMDc2YTkzZDU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBv
c2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKQEAgLTIsNDAgKzIsNDIgQEAKIAogPGh0bWw+CiA8aGVh
ZD4KLSAgPHN0eWxlPgotICAgIC5maXhlZCB7Ci0gICAgICBwb3NpdGlvbjogZml4ZWQ7Ci0gICAg
ICB3aWR0aDogMTBweDsKLSAgICAgIGhlaWdodDogMTBweDsKLSAgICB9Ci0gIDwvc3R5bGU+Ci0K
LSAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGlu
Z0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVB
c1RleHQoZG9jdW1lbnQpOwotICAgICAgfSwgZmFsc2UpOwotICAgIH0KLSAgPC9zY3JpcHQ+Cis8
c3R5bGU+CisuZml4ZWQgeworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB3aWR0aDogMTBweDsK
KyAgICBoZWlnaHQ6IDEwcHg7Cit9Cis8L3N0eWxlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIikuaW5uZXJUZXh0ID0gd2luZG93Lmlu
dGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5k
b3cuaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICB9
LCBmYWxzZSk7Cit9Cis8L3NjcmlwdD4KIDwvaGVhZD4KIAogPGJvZHk+Ci0gIDxkaXYgc3R5bGU9
ImhlaWdodDogMTAwMHB4Ij4KLSAgICA8cHJlIGlkPSJsYXllcnRyZWUiPjwvcHJlPgotICA8L2Rp
dj4KLQotICA8IS0tIE5laXRoZXIgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBnZXRzIGl0cyBv
d24gbGF5ZXIuIC0tPgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0xIj48
L2Rpdj4KLSAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAtMTAw
cHgiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0xOyB0b3A6
IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KLQotICA8IS0tIFRoaXMgZWxlbWVudCBnZXRzIGl0
cyBvd24gbGF5ZXIgYmVjYXVzZSBpdCBpbnRlcnNlY3RzIHdpdGggdGhlIHZpZXdwb3J0LiAtLT4K
LSAgPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAwcHg7IGxlZnQ6
IDBweCI+PC9kaXY+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+CisgICAgPHByZSBpZD0i
bGF5ZXJUcmVlIj48L3ByZT4KKyAgICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cyI+PC9wcmU+Cis8L2Rpdj4KKworPCEtLSBOZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVu
dHMgZ2V0cyBpdHMgb3duIGxheWVyLiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0iei1p
bmRleDogLTEiPjwvZGl2PgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsg
dG9wOiAtMTAwcHgiPjwvZGl2PgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAt
MTsgdG9wOiAwcHg7IGxlZnQ6IDEwMDBweCI+PC9kaXY+CisKKzwhLS0gVGhpcyBlbGVtZW50IGdl
dHMgaXRzIG93biBsYXllciBiZWNhdXNlIGl0IGludGVyc2VjdHMgd2l0aCB0aGUgdmlld3BvcnQu
IC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAwcHg7IGxl
ZnQ6IDBweCI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDYzZTY4NTQyZGRjMDY4ZjU2OWNj
OTg3OTQ5NDRkM2VlYWVhYjZkMDEuLjZmOGJkMDRhNTU0NTU2OWJkM2NlODQzNzM3YjhjMmJkMzlj
ODc4YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMzU4Myw4ICszNTgzLDEwIEBAIGNyYnVnLmNvbS8xMzI4OTggaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwgWyBGYWlsdXJlIFBhCiAjIFRp
bWluZyBvdXQgb24gc29tZSBXaW5kb3dzIGJvdHMKIHdlYmtpdC5vcmcvYi84OTUxMCBbIFdpbiBd
IGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAot
d2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRy
YW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFz
cyBdCi13ZWJraXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2Fy
ZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVk
LXBhZ2Utc2NhbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2Iv
OTY4MzkgY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
OTY4MzkgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21l
dHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dlb21l
dHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgcGxhdGZvcm0vY2hy
b21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9u
LXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvODk3MDIgY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXll
ci1yZWN1cnNpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2Iv
ODk3MDIgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL3NjYWxp
bmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBl
Y3RlZC50eHQKaW5kZXggYmU0MDgwY2YxY2JhYThkZDFjZWIxZjlkYjEyMjVjOGYzMTExNWI4My4u
MzJlZjBjZTVjYzc1OWVmYmY3YTAyMGVjNGYxYmJiMThiZDIwZTJhYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1z
Y3JvbGxpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDYgQEAKIChTY3JvbGxpbmcgbm9kZQogICAodmlld3BvcnQgcmVjdCAwIDAgODAwIDYw
MCkKICAgKGNvbnRlbnRzIHNpemUgODAwIDYwMCkKLSAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVh
ZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICkKKyAgKFNjcm9sbGluZyBvbiBt
YWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBhaW50IG9iamVjdHMpCiApCiAKZGlmZiAt
LWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNWExMGQ5YmIxNjhjOTE1NTVjZWE4
MDcwMzRhY2M2N2FjNGI3MjhhLi5mNDIxNDlhMmRlZjUzMWM2N2IyZTYyY2I1NjRkZTFmMDAxY2Qx
MWRlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMTItMDMgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4K
KworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4
ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHN5bWJvbC4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisK
IDIwMTItMTItMDQgIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlAaW50ZWwu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl1bQUNdIFVTRV9HUkFQSElDU19TVVJGQUNFIHNob3Vs
ZCBiZSBlbmFibGVkIG9ubHkgaWYgWGNvbXBvc2l0ZSBhbmQgWHJlbmRlciBleHRlbnNpb25zIGFy
ZSBmb3VuZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177767</attachid>
            <date>2012-12-05 09:03:45 -0800</date>
            <delta_ts>2012-12-05 10:30:16 -0800</delta_ts>
            <desc>Yet another try of WebKit2.def.in change</desc>
            <filename>bug-102543-20121205170110.patch</filename>
            <type>text/plain</type>
            <size>44768</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg1YzM2NzRhMWEyZTUw
MTY0MGQxYTAxZTgyYzFlMTkxYmFhOTk2ZS4uY2Y2MTUxMTkyM2FkYzc4MzIxYTdkYzk3NzM3ZGU1
Nzc4M2JhNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMi0wNSAgTm9lbCBHb3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAK
ICAgICAgICAgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORyk6IERvbid0IHN3aXp6
bGUgZGVjb2RlIGRvd24gc2FtcGxlZCBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYTA3YmZmMjJkNmY2
NzNkY2EyZWM5NDM3NTEyNDdkM2ZjMTIyZTJlLi41YWM5ZDYyZjNjZjk0NjExYmNkMzE4ZWViMTQ3
NDNjOTg2ZDE2N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMDQgIFhp
YW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQg
ZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgQWRk
IHN5bWJvbC4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZi5pbjoKKwogMjAxMi0xMi0wNSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gRVdLMlVuaXRUZXN0QmFzZS5ld2tfZmF2aWNvbl9kYXRhYmFzZV9hc3luY19p
Y29uX2dldCBpcyBjcmFzaGluZyB3aXRoIG5ldyBFd2tfQ29udGV4dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCA0ZjRiZmVlM2FjZDVhYWFjNTZlZjdlNjBhOWJhMjU1YmY5YjAwMzE0Li4zZDRlOTc5
MDk1NjFkZjc3MmE3Nzg0ZWZkOTIwY2RhNTViYmFkYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtNzYxLDYgKzc2MSw3IEBAIF9fWk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHRFdgogX19aTjdXZWJDb3JlNFBhZ2UyNXN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnNFdgog
X19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19a
TjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAorX19aTjdX
ZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0RXYKIF9fWk43V2Vi
Q29yZTRQYWdlMzJzZXRNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNv
cmU0UGFnZTM1cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJD
b3JlNFBhZ2UzNnNldFNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uc0ViCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA5ZDUzNTk3NjEyYTJhMDk1MTBlZmJiZjY1NWU1YWFkOGRhYjVlMzk1Li4z
NmQ2NDdhZWM0NDgxNDZmY2E3NmE2OTBhMGIzNDFkNTllNWFjODdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTI1NSw2ICsyNTUsMTcgQEAgU3RyaW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgUGFnZTo6bWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKQoreworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQg
PSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dCgpOworCisgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxp
bmdDb29yZGluYXRvci0+bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKwogc3RydWN0IFZpZXdNb2RlSW5mbyB7CiAgICAgY29uc3Qg
Y2hhciogbmFtZTsKICAgICBQYWdlOjpWaWV3TW9kZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0
NDNhYjI2MGIxOTRiMzc1ZWJlZWVmY2RhNzRjMGI2NGZhMzZiMDBjLi42YzM5NTUwZmFlMDVhYmNj
NDQ2MzI0NTY4NWMwMGYyNWRlODBkNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTk2LDYgKzE5Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAKICAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dCgpOworICAgICAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHQoKTsKIAogICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3Nl
dHRpbmdzLmdldCgpOyB9CiAgICAgICAgIFByb2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25z
dCB7IHJldHVybiBtX3Byb2dyZXNzLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggY2Q5NDMyYzJh
ODJkOGUwMTgwMDc0N2M0YjJmZDA4NzRlMDllYjI2Mi4uZGUxZTFlNTc4NjQyNmUzZmZmM2U2NTlj
OWY2MTZhYmUzMTA3NzU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjUsMzcgKzY1LDMyIEBAIFBhc3NS
ZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUo
UGFnZSogcGFnZSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KHBhZ2UpKTsKIH0KIAotc3RhdGljIGludCBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KGludCBz
Y3JvbGxQb3NpdGlvbiwgaW50IG1heFZhbHVlLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBkcmFn
RmFjdG9yKQorc3RhdGljIGludCBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KGludCB2aXNpYmxl
Q29udGVudFNpemUsIGludCBjb250ZW50c1NpemUsIGludCBzY3JvbGxQb3NpdGlvbiwgaW50IHNj
cm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9vbCBmaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIGlmICghbWF4VmFsdWUpCisgICAgaW50IG1heFZh
bHVlID0gY29udGVudHNTaXplIC0gdmlzaWJsZUNvbnRlbnRTaXplOworICAgIGlmIChtYXhWYWx1
ZSA8PSAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghc2Nyb2xsT3JpZ2luKSB7Ci0g
ICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA8IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlv
biA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCisgICAg
ICAgIGlmIChzY3JvbGxQb3NpdGlvbiA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+IG1heFZhbHVlKQogICAgICAgICAgICAgc2Nyb2xsUG9z
aXRpb24gPSBtYXhWYWx1ZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoc2Nyb2xsUG9zaXRp
b24gPiAwKQotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSAwOwotICAgICAgICBlbHNlIGlm
IChzY3JvbGxQb3NpdGlvbiA8IC1tYXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9u
ID49IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9u
IDwgLW1heFZhbHVlKQogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSAtbWF4VmFsdWU7CiAg
ICAgfQotICAgIAotICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAqIGRyYWdGYWN0b3I7CisKKyAg
ICBmbG9hdCBkcmFnRmFjdG9yID0gZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/
IDEgOiAoY29udGVudHNTaXplIC0gdmlzaWJsZUNvbnRlbnRTaXplICogZnJhbWVTY2FsZUZhY3Rv
cikgLyBtYXhWYWx1ZTsKKyAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24gKiBkcmFnRmFjdG9yIC8g
ZnJhbWVTY2FsZUZhY3RvcjsKIH0KIAogSW50U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0
aW9uKGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgY29u
dGVudHNTaXplLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBzY3JvbGxPcmlnaW4sIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVtZW50
c0xheW91dFJlbGF0aXZlVG9GcmFtZSkKIHsKLSAgICBJbnRTaXplIG1heE9mZnNldChjb250ZW50
c1NpemUud2lkdGgoKSAtIHZpc2libGVDb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50c1NpemUu
aGVpZ2h0KCkgLSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkpOwotICAgIAotICAgIEZsb2F0
U2l6ZSBkcmFnRmFjdG9yID0gZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/IEZs
b2F0U2l6ZSgxLCAxKSA6IEZsb2F0U2l6ZSgKLSAgICAgICAgKGNvbnRlbnRzU2l6ZS53aWR0aCgp
IC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heE9m
ZnNldC53aWR0aCgpLAotICAgICAgICAoY29udGVudHNTaXplLmhlaWdodCgpIC0gdmlzaWJsZUNv
bnRlbnRSZWN0LmhlaWdodCgpICogZnJhbWVTY2FsZUZhY3RvcikgLyBtYXhPZmZzZXQuaGVpZ2h0
KCkpOwotCi0gICAgaW50IHggPSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0
aW9uLngoKSwgbWF4T2Zmc2V0LndpZHRoKCksIHNjcm9sbE9yaWdpbi54KCksIGRyYWdGYWN0b3Iu
d2lkdGgoKSAvIGZyYW1lU2NhbGVGYWN0b3IpOwotICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNj
cm9sbE9mZnNldChzY3JvbGxQb3NpdGlvbi55KCksIG1heE9mZnNldC5oZWlnaHQoKSwgc2Nyb2xs
T3JpZ2luLnkoKSwgZHJhZ0ZhY3Rvci5oZWlnaHQoKSAvIGZyYW1lU2NhbGVGYWN0b3IpOwotCisg
ICAgaW50IHggPSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHZpc2libGVDb250ZW50UmVjdC53
aWR0aCgpLCBjb250ZW50c1NpemUud2lkdGgoKSwgc2Nyb2xsUG9zaXRpb24ueCgpLCBzY3JvbGxP
cmlnaW4ueCgpLCBmcmFtZVNjYWxlRmFjdG9yLCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVU
b0ZyYW1lKTsKKyAgICBpbnQgeSA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJsZUNv
bnRlbnRSZWN0LmhlaWdodCgpLCBjb250ZW50c1NpemUuaGVpZ2h0KCksIHNjcm9sbFBvc2l0aW9u
LnkoKSwgc2Nyb2xsT3JpZ2luLnkoKSwgZnJhbWVTY2FsZUZhY3RvciwgZml4ZWRFbGVtZW50c0xh
eW91dFJlbGF0aXZlVG9GcmFtZSk7CiAgICAgcmV0dXJuIEludFNpemUoeCwgeSk7CiB9CiAKQEAg
LTM0Myw4ICszMzgsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xv
d1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFtZVZpZQogICAgICAgICBSZW5kZXJP
YmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgPSAqaXQ7CiAgICAgICAgIGlmICghdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aWV3cG9ydENvbnN0cmFpbmVkQm94TW9kZWxP
YmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qp
OwotICAgICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdC0+bGF5ZXIo
KS0+YmFja2luZygpKQorICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOworICAgICAgICBp
ZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiAhbGF5ZXItPmlzRml4ZWRQb3NpdGlvbk5vdFRv
QmVQYWludGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzk4LDQgKzM5MywyOSBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCit7CisgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworCisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdD
b29yZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICIpOworICAgIGlmIChyZWFz
b25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBm
aXhlZCBsYXllcnMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
SGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJJcyBpbWFnZSBkb2N1bWVudCwgIik7CisKKyAgICBpZiAoc3RyaW5nQnVpbGRlci5s
ZW5ndGgoKSkKKyAgICAgICAgc3RyaW5nQnVpbGRlci5yZXNpemUoc3RyaW5nQnVpbGRlci5sZW5n
dGgoKSAtIDIpOworICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dChtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKaW5kZXggYzJmMWZhODY1MGVhYjQwMjVkZTNkYmQ5MjZkMGM2Zjk4NTIzNTFm
Mi4uZjI1MTBjY2E1MTI3YmUwZmE4MmM4OTVjZWY3ODlhOGI0ZThlNDgwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBA
IC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NM
YXllciosIGJvb2wpIHsgfQogCisgICAgc3RhdGljIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk7CisgICAgU3RyaW5nIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDVkMzdiZTJmNTMzYWU2YWZlMzU5NDczOWI2ZTg2ZDdjNTU4ZDMzMjMu
LjFhZDVmYTI4YzY3MmRlMWIwNDhjODM5ODVkZTM2M2FhNjg4MzY0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcApAQCAtMjI3LDE4ICsyMjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNv
bgogCiAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCkgewogICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgIHRzIDw8
ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICI7Ci0gICAgICAgIGlmIChtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQotICAgICAgICAgICAgdHMgPDwgIkZvcmNlZCBv
biBtYWluIHRocmVhZCwgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWlu
dE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAi
OwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgdmll
d3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJz
LCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQot
ICAgICAgICAgICAgdHMgPDwgIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIjsKLSAgICAg
ICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCi0gICAgICAgICAgICB0cyA8PCAi
SXMgaW1hZ2UgZG9jdW1lbnQiOwotICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgdHMgPDwg
IihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIiA8PCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQobV9zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSA8PCAiKVxuIjsKICAgICB9CiAKICAgICBpZiAo
bV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAhPSBJbnRQb2ludCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZmIyZDRjNzQ5ZGIxNzhiMWVkODVjZTVi
MGY5YzA3YzRiNzhjYWU3Li45YmEzM2JjODI3MDY4OGU3NjQ2YjlkZDA0MmI2YjlhMWM4NTEyOTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMxMjMsNiAr
MzEyMyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIo
UmVuZGVyTGF5ZXIqIGxheWVyKQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICBpZiAoaXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1
cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0
aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9u
J3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMg
Y2FzZS4KQEAgLTQ3MzYsNiArNDczOSwxOSBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllcjo6
bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tpbmcgPyBt
X2JhY2tpbmctPmxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgOiAwOwogfQorCitib29sIFJlbmRlckxh
eWVyOjppc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFpbnRlZCgpIGNvbnN0Cit7CisgICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBp
ZiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQ
b3NpdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nIGZvciBmaXhlZCBwb3NpdGlvbiBpcyBlbmFibGVkLCBhbGwgZml4ZWQgcG9zaXRpb24gbGF5
ZXJzIHN0YXJ0aW5nIGEgc3RhY2tpbmcgY29udGV4dAorICAgICAgICAvLyBhbmQgbm90IHVuZGVy
IGEgdHJhbnNmb3JtZWQgZWxlbWVudCBzaG91bGQgYmUgY29tcG9zaXRlZCwgb3IgaXMgbm90IHRv
IGJlIHBhaW50ZWQgKGUuZy4gb3V0LW9mLXZpZXcpLgorICAgICAgICBpZiAoIWlzQ29tcG9zaXRl
ZCgpICYmIGlzU3RhY2tpbmdDb250ZXh0KCkgJiYgbV9yZW5kZXJlci0+c3R5bGUoKS0+cG9zaXRp
b24oKSA9PSBGaXhlZFBvc2l0aW9uICYmIG1fcmVuZGVyZXItPmNvbnRhaW5lcigpID09IG1fcmVu
ZGVyZXItPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KICNlbmRpZgogCiBib29sIFJlbmRlckxheWVyOjpwYWludHNXaXRoVHJh
bnNmb3JtKFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMGMwY2Q3OTgyMWJhZTkyYzg5NTk5NGIwYzc3ZDMz
MDExYmVhYWY2OS4uYTJhZjU2YWNlZGViZDk0NmI4ZTkzOGY2ZDlkYzMzMjZmYWMwZWZiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY1NSw2ICs2NTUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbENv
cm5lcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygp
IGNvbnN0IE9WRVJSSURFOworICAgIGJvb2wgaXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQo
KSBjb25zdDsKICNlbHNlCiAgICAgYm9vbCBpc0NvbXBvc2l0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaGFzQ29tcG9zaXRlZE1hc2soKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCA1NjFlYjI4YTZkOWM4YjE4ZmJlOTE0MDZjY2QzZDM4ZjI0Y2FhNzcwLi4z
YmNjYzkwYTMwZDdkM2VjNDNmNzRhNDNkYTdjMmUyYzkyZDkwYmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTk3Niw2
ICsxOTc2LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICBpZiAoRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKSB7CiAgICAgICAgIEludFJlY3Qg
dmlld0JvdW5kcyA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgIElu
dFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGxheWVyLCByb290
UmVuZGVyTGF5ZXIoKSk7CisgICAgICAgIGxheWVyQm91bmRzLnNjYWxlKHBhZ2VTY2FsZUZhY3Rv
cigpKTsKICAgICAgICAgaWYgKCF2aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJCb3VuZHMpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCA5NGEzYjA1MmVjMGNmYjljOTUzOTczNmI4NTZmYWZlNDczZGZkMTRhLi5m
NTJlYTk5NmQwMmZmMWE4ODI5OGNkNTQwM2I5NTNjNjBjN2QzMWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDY1LDYgKzE0NjUsMjAgQEAgU3RyaW5nIEludGVybmFs
czo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9u
Q29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiB9
CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBwYWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgp
OworfQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhE
b2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICgh
ZG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI5OWYzZTNhYjAw
YmI0MWMzNjczYWE2YTIxNmM1NmI5MGFlOGQ5YjQuLjRiMTM2MTQ4ZDc4NzZjMTZhMjJiNjNhMWNk
MDRjODRhNmQwNDI3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA5LDYg
KzIwOSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50
KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICBTdHJpbmcgbWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDZkYzc1Y2QwMWFlOWJl
OWJmZTkxYzdhMGRiODk5NGU0Y2Q1NmE4YWMuLmE5MTlmZjIxYzA3ZTRjZGIwMTI5ZDJhMGNiNGY3
ODEyYzg2OTJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE2Niw2
ICsxNjYsNyBAQAogICAgIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9j
dW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9j
dW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBET01TdHJpbmcgbWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4gRG9jdW1l
bnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmLmluCmluZGV4IDI1Yjk5OWZiMjc1NWY0ZTNjNDMyN2YwOWVkNzg3ZDVhMTZhNWYwMDMuLjVj
YzVhZjVlY2FiMTgzMDMzNDNiYTA5MjQwYzkwYjk2ZDcyOGEyODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYuaW4KQEAgLTIyOSw2ICsyMjksNyBAQCBFWFBPUlRTCiAgICAgICAgID9pc1ByZWxv
YWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBa
CiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0
ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBX
ZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP21haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoK
ICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFB
RT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2Rl
QDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKICAgICAgICAgP25leHRTaWJsaW5n
QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0
Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpAQCAtMjUzLDgg
KzI1NCw2IEBAIEVYUE9SVFMKICAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlQEhp
c3RvcnlDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9u
Q29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25D
b250ZXh0QDJAWFoKICAgICAgICAgP3NjcmlwdE5hbWVUb0NvZGVAV2ViQ29yZUBAWUE/QVc0VVNj
cmlwdENvZGVAQEFCVlN0cmluZ0BXVEZAQEBaCi0gICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0
QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgotICAg
ICAgICA/c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5n
QFdURkBAWFoKICAgICAgICAgP3NldENhblN0YXJ0TWVkaWFAUGFnZUBXZWJDb3JlQEBRQUVYX05A
WgogICAgICAgICA/c2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFC
VkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXREZXZpY2VT
Y2FsZUZhY3RvckBQYWdlQFdlYkNvcmVAQFFBRVhNQFoKQEAgLTI2Niw3ICsyNjUsNiBAQCBFWFBP
UlRTCiAgICAgICAgID9zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBA
U0FYX05AWgogICAgICAgICA/bW9ja1Njcm9sbGJhcnNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVA
QFNBX05YWgogICAgICAgICA/c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzQFNldHRpbmdzQFdlYkNv
cmVAQFNBWF9OQFoKLSAgICAgICAgP3NldFBhZ2VTY2FsZUZhY3RvckBQYWdlQFdlYkNvcmVAQFFB
RVhNQUJWSW50UG9pbnRAMkBAWgogICAgICAgICA/c2V0UGFnaW5hdGlvbkBQYWdlQFdlYkNvcmVA
QFFBRVhBQlVQYWdpbmF0aW9uQDJAQFoKICAgICAgICAgP3NldFBpY3RvZ3JhcGhGb250RmFtaWx5
QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2Rl
QEBAWgogICAgICAgICA/c2V0U2Fuc1NlcmlmRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBR
QUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKQEAgLTMzOSw4ICszMzcs
NiBAQCBFWFBPUlRTCiAgICAgICAgID9kb2N1bWVudEBET01XaW5kb3dAV2ViQ29yZUBAUUJFUEFW
RG9jdW1lbnRAMkBYWgogICAgICAgICA/b3BlbkBET01XaW5kb3dAV2ViQ29yZUBAUUFFP0FWPyRQ
YXNzUmVmUHRyQFZET01XaW5kb3dAV2ViQ29yZUBAQFdURkBAQUJWU3RyaW5nQDRAQUJWQXRvbWlj
U3RyaW5nQDRAMFBBVjEyQDJAWgogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVA
SlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVkRPTVdpbmRvd0Ax
QEBaCi0gICAgICAgID9sYXllclRyZWVBc1RleHRARnJhbWVAV2ViQ29yZUBAUUJFP0FWU3RyaW5n
QFdURkBASUBaCi0gICAgICAgID90cmFja2VkUmVwYWludFJlY3RzQXNUZXh0QEZyYW1lQFdlYkNv
cmVAQFFCRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9zZXRUcmFja3NSZXBhaW50c0BGcmFt
ZVZpZXdAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgPz8xQml0bWFwSW1hZ2VAV2ViQ29yZUBA
VUFFQFhaCiAgICAgICAgID8/MEJpdG1hcEltYWdlQFdlYkNvcmVAQElBRUBQQVZJbWFnZU9ic2Vy
dmVyQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDhkMDRlNjA3OWMwNWU5NzgxMTk5
ZDI1MzNlMDYxMGY5MGZkZTliNTguLmM3Mjc1NTEzZjlhYTA4ZDFiMDYyM2ZjNDVmZjQwYWJmYmEw
OTM3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMzEsNiArMzEsNyBAQCBfWk43V2Vi
Q29yZTRQYWdlMTNzZXRQYWdpbmF0aW9uRVJLTlNfMTBQYWdpbmF0aW9uRTsKIF9aTjdXZWJDb3Jl
NFBhZ2UxOHNldFBhZ2VTY2FsZUZhY3RvckVmUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmU0
UGFnZTIwc2V0RGV2aWNlU2NhbGVGYWN0b3JFZjsKIF9aTjdXZWJDb3JlNFBhZ2UyNHNjcm9sbGlu
Z1N0YXRlVHJlZUFzVGV4dEV2OworX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnNBc1RleHRFdjsKIF9aTjdXZWJDb3JlNFBhZ2UxNnNldENhblN0YXJ0TWVkaWFFYjsK
IF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQTlNfMTBDbGllbnRSZWN0RTsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dSb290RTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNTIxMzZm
MGU3NWRiY2MzZjc0NWY1NDg4MmMzODIwZjllYjliOWE1Li43YWM0NGJlNmRjMGJiMzA4YWEzZDZh
ZGJhOTNjZjk3NjQwN2FjMDg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMTItMDMgIFhp
YW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQg
ZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQvbW9kaWZpZWQgdGVzdCB0
byBlbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRyaWdnZXJlZCBieSBvdXQtb2YtdmlldyBm
aXhlZC1wb3NpdGlvbmVkIGVsZW1lbnRzLAorICAgICAgICBhbmQgZW5zdXJlIG91dC1vZi12aWV3
IGNoZWNraW5nIGlzIGNvcnJlY3Qgd2hlbiBwYWdlIGlzIHNjYWxlZC4KKworICAgICAgICBCVFcs
IGZpeGVkIHNvbWUgdGVzdHMgdGhhdCBzZXQgZW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0
aW9uIGluIG9ubG9hZCBoYW5kbGVyIHdoaWNoIG1heSBub3QgdGFrZSBlZmZlY3QgYmVjYXVzZSBp
dCBpcyB0b28gbGF0ZS4KKyAgICAgICAgTGVhdmUgdGhlIGltYWdlIG1pc21hdGNoZXMgdG8gYnVn
IDk2ODM5LgorCisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24t
Y29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWw6
CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRl
ZC1wYWdlLXNjYWxlLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQt
cG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWw6CisgICAgICAg
ICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS5odG1sOgorICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBv
c2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sOgorICAgICAg
ICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3Np
dGVkLXBhZ2Utc2NhbGUuaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQt
b2Ytdmlldy1zY2FsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbDogRW5zdXJlIHNsb3ctc2Ny
b2xsaW5nIGlzIG5vdCB0cmlnZ2VyZWQuIEV4cGVjdGF0aW9uIGlzIHVuY2hhbmdlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVj
dGVkLnR4dDogVXBkYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZSBvZiBtYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29ucy4KKwogMjAxMi0xMi0wNSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9t
ZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCmluZGV4
IDc5ZTQyNjE4ZjVkNTQyMmU5MDM1ZTM1YTUwMjlhMDA2Mjc0N2YxMWQuLmZiYjE3NWZkNmZlYzhh
N2IyODY1ZGU0YmYyMGZkMTFjYWU5NjE3NmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3du
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbApAQCAtMywyNyArMywyNSBAQAogPGhl
YWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBweDsK
IH0KIC5maXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6
IDE7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7
CisgICAgbGVmdDogMTBweDsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2Fs
ZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0g
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwotICAg
IH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQodHJ1ZSk7Ci0gIH0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7
CisgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKK30K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7
CiA8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxlPSJ3aWR0
aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgorPGJvZHkgc3R5bGU9IndpZHRoOjIwMDBweDtoZWln
aHQ6MjAwMHB4OyI+CiA8ZGl2IGNsYXNzPSJmaXhlZC1uby16LWluZGV4Ij5URVNUPC9kaXY+PGJy
PgogPGRpdiBjbGFzcz0iZml4ZWQtd2l0aC16LWluZGV4Ij5URVNUPC9kaXY+CiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xs
Lmh0bWwKaW5kZXggNDUyZDFkYjMwMTA3NmNkZGYyNjI2YWYzNDhkZTkxMGNmMWJlYjQyNS4uOGFh
ZmIyMjBjMDYzNTA5OGVhOGJlODJmMDcyZjlkZDZiM2QyN2E4YSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdl
LXNjYWxlLXNjcm9sbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbApAQCAtMywy
OSArMywyNyBAQAogPGhlYWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgbGVmdDogMTBweDsKIH0KIC5maXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4
ZWQ7Ci0gIHotaW5kZXg6IDE7Ci0gIGxlZnQ6IDEwcHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOnRy
YW5zbGF0ZVooMCk7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7CisgICAg
bGVmdDogMTBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOwogfQogPC9z
dHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBv
c2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIH0KLSAgICB3aW5kb3cuc2Nyb2xsVG8oMTAw
LDEwMCk7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Ci0gIH0KK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7
CisgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Cit9Cit3
aW5kb3cuc2Nyb2xsVG8oMTAwLDEwMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
c2NhbGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgorPGJvZHkgc3R5
bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CiA8ZGl2IGNsYXNzPSJmaXhlZC1uby16
LWluZGV4Ij5UaGlzIHRlc3Qgc2hvdWxkIG5vdCBoaXQgYW4gYXNzZXJ0aW9uIGluIFJlbmRlckdl
b21ldHJ5TWFwIGluIGRlYnVnIGJ1aWxkczwvZGl2Pjxicj4KIDxkaXYgY2xhc3M9ImZpeGVkLXdp
dGgtei1pbmRleCI+VGhpcyB0ZXN0IHNob3VsZCBub3QgaGl0IGFuIGFzc2VydGlvbiBpbiBSZW5k
ZXJHZW9tZXRyeU1hcCBpbiBkZWJ1ZyBidWlsZHM8L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0
ZWQtcGFnZS1zY2FsZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4
ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKaW5kZXggZmM2MzY1MjBmOTQ3
MTY4NjM5ZmY5NWQ5MTYxMjJmMzcwMTY3OWRhMC4uNmYyZjcyMjU2Y2U4NGNjMzNjYzlhYTBiMmUw
ZGYzMTQ0MmRhZTE0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdl
LXNjYWxlLmh0bWwKQEAgLTMsMjcgKzMsMjUgQEAKIDxoZWFkPgogPHN0eWxlPgogLmZpeGVkLW5v
LXotaW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4
IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4OworICAg
IHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7CiB9CiA8
L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUoKSB7Ci0gICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5z
ZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgfQoraWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNv
bXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKK30KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5
IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDsiPgor
PGJvZHkgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CiA8ZGl2IGNsYXNzPSJm
aXhlZC1uby16LWluZGV4Ij5URVNUPC9kaXY+PGJyPgogPGRpdiBjbGFzcz0iZml4ZWQtd2l0aC16
LWluZGV4Ij5URVNUPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNj
YWxlLWRvd24uaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBv
c2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCmluZGV4IGM1YWQ0
NmM5YTZkOGY0M2I0NDJhOTY3NjBlZGRkZjk2YTg5MzVjOGMuLjlmNDZiZGE0OWFkNDliZDQ4OGUw
NGYwMTRkYTBkZmNmZGZmNzYzOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCkBAIC0zLDI4ICszLDI4
IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsKLSAgcG9zaXRpb246IGFi
c29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0
OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAg
ei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgei1p
bmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OwogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0
aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRy
dWUpOwotICAgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAw
KTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KHRydWUpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwor
fQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKIAorZnVuY3Rpb24gdGVzdCgpIHsKICAgICB2YXIgZCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdmcmFtZScpLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7CiAgICAgZC53cml0ZSgiPGRpdiBz
dHlsZT0ncG9zaXRpb246Zml4ZWQ7IHotaW5kZXg6IDE7IGxlZnQ7IDEwcHg7Jz5URVNUPC9kaXY+
Iik7CiAgICAgZC5jbG9zZSgpOwotICB9Cit9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9u
bG9hZD0idGVzdCgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1p
ZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0
bWwKaW5kZXggZTc5YjlmMmFlYjA5Y2JjN2EyOWU5MDE0MTlkMjBjMDc1NzJkMTVkZi4uMjlhOGMz
YTIxZDUwMGY1MTMxZGQ4ZjRjZmM2Y2I4OWZhZTNmNDg2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2Zp
eGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbApAQCAtMywyOCAr
MywyOCBAQAogPGhlYWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
bGVmdDogMTBweDsKIH0KIC5maXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7
Ci0gIHotaW5kZXg6IDE7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGZpeGVkOworICAg
IHotaW5kZXg6IDE7CisgICAgbGVmdDogMTBweDsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBm
dW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlv
bih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAs
IDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRy
dWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwor
fQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKIAorZnVuY3Rpb24gdGVzdCgpIHsKICAgICB2YXIgZCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdmcmFtZScpLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7CiAgICAgZC53cml0ZSgiPGRpdiBz
dHlsZT0ncG9zaXRpb246Zml4ZWQ7IHotaW5kZXg6IDE7IGxlZnQ7IDEwcHg7Jz5URVNUPC9kaXY+
Iik7CiAgICAgZC5jbG9zZSgpOwotICB9Cit9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9u
bG9hZD0idGVzdCgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10
cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUtZG93bi5odG1sCmluZGV4IDZjMTdmOTZlZTA4MGU3YTMzYzczYzUwOGE0NGY3MTMz
YTllODhmZjQuLjE1MGExYTIzMjM1ODRmYzBlMzhmYzMxZWZhNTliZjYzNjkwMDFjYTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRy
YW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVk
LXBhZ2Utc2NhbGUtZG93bi5odG1sCkBAIC0zLDI5ICszLDI3IEBACiA8aGVhZD4KIDxzdHlsZT4K
IC5maXhlZC1uby16LWluZGV4IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4
OwotICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxMHB4OworICAgIC13ZWJraXQtdHJh
bnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7CiB9CiAuZml4ZWQtd2l0aC16
LWluZGV4IHsKLSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4
OwotICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOwor
ICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7Cisg
ICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKIH0K
IDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93
LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVD
b21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gIH0KK2lmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFi
bGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFs
cy5zZXRQYWdlU2NhbGVGYWN0b3IoMC41LCAwLCAwKTsKK30KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwvaGVhZD4K
LTxib2R5IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBw
eDsiPgorPGJvZHkgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+CiA8ZGl2IGNs
YXNzPSJmaXhlZC1uby16LWluZGV4Ij5URVNUPC9kaXY+PGJyPgogPGRpdiBjbGFzcz0iZml4ZWQt
d2l0aC16LWluZGV4Ij5URVNUPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRl
ZC1wYWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKaW5kZXggZjlh
MGMzNzM4NzNmOTVlNGYyYTVjNzdmZmQxM2Q4ZjQ2ZWJlMmM2ZC4uNTdmNzJlM2QxOTMyNzgyNzQ5
YjA2YzUwNDA1OTBlNjIyYjgzNmNmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbApAQCAtMywyOSArMywyNyBA
QAogPGhlYWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgbGVmdDogMTBweDsKLSAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBw
eCkgcm90YXRlKDIwZGVnKTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBw
eDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcp
OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAgei1pbmRl
eDogMTsKLSAgbGVmdDogMTBweDsKLSAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBw
eCkgcm90YXRlKDIwZGVnKTsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgei1pbmRleDogMTsK
KyAgICBsZWZ0OiAxMHB4OworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgp
IHJvdGF0ZSgyMGRlZyk7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUo
KSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAg
ICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgfQot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKLSAgfQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKK30KK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3Nj
cmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2NhbGUoKTsiIHN0eWxlPSJ3aWR0aDoyMDAw
cHg7aGVpZ2h0OjIwMDBweDsiPgorPGJvZHkgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAw
MHB4OyI+CiA8ZGl2IGNsYXNzPSJmaXhlZC1uby16LWluZGV4Ij5URVNUPC9kaXY+PGJyPgogPGRp
diBjbGFzcz0iZml4ZWQtd2l0aC16LWluZGV4Ij5URVNUPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlv
bi1vdXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNTM3NjY1NDgyOWRjYmJjZDlkZjhkMmJlMmIyYzAxNjEwNjNl
NjFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYzIEBACitOb3Qgc2NhbGVkOgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA3ODUu
MDAgMTAxNi4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJv
dW5kcyA3ODUuMDAgMTAxNi4wMCkKKyAgICAgIChjaGlsZHJlbiAyCisgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChib3Vu
ZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAg
ICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICAp
CispCitTY2FsZT0wLjU6CisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDQwMC4wMCA1MDguMDAp
CisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChhbmNob3IgMC4wMCAw
LjAwKQorICAgICAgKGJvdW5kcyA4MDAuMDAgMTAxNi4wMCkKKyAgICAgICh0cmFuc2Zvcm0gWzAu
NTAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDAuNTAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAg
MC4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgKGNoaWxkcmVuIDQKKyAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCAxMDA4LjAwKQorICAgICAg
ICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgICAgICAocG9zaXRpb24gMTAwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMg
MTAuMDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAg
ICAocG9zaXRpb24gNjAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkK
KyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAu
MDAgMTAuMDApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTEuNToK
KyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgMTI3Mi4wMCAxNTI0LjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgICAgIChi
b3VuZHMgODQ4LjAwIDEwMTYuMDApCisgICAgICAodHJhbnNmb3JtIFsxLjUwIDAuMDAgMC4wMCAw
LjAwXSBbMC4wMCAxLjUwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAu
MDAgMC4wMCAxLjAwXSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVy
CisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAg
ICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbCBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3
LXNjYWxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MzNkN2NkZGQ4ZTExODAyNDMwNDFiYTI2MmU4OTAx
NWE3YzNlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQuaHRtbApAQCAtMCww
ICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisuZml4
ZWQgeworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6
IDEwcHg7Cit9Cis8L3N0eWxlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Citp
ZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Cisg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250
ZXh0KHRydWUpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCisgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9u
KCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJUcmVlIikuaW5uZXJU
ZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyIpLmlubmVyVGV4
dCA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVudCk7CisKKyAg
ICAgICAgaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOworCisgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibGF5ZXJUcmVlU2NhbGVkRG93biIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRy
ZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zU2NhbGVkRG93biIpLmlubmVyVGV4dCA9IGludGVy
bmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVudCk7CisKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMS41LCAwLCAwKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibGF5ZXJUcmVlU2NhbGVkVXAiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJU
cmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRVcCIpLmlubmVyVGV4dCA9IGlu
dGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVudCk7CisKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAg
ICAgICB9LCAwKTsKKyAgICB9LCBmYWxzZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJv
ZHk+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+CisgICAgTm90IHNjYWxlZDoKKyAgICA8
cHJlIGlkPSJsYXllclRyZWUiPjwvcHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zIj48L3ByZT4KKyAgICBTY2FsZT0wLjU6CisgICAgPHByZSBpZD0ibGF5ZXJUcmVl
U2NhbGVkRG93biI+PC9wcmU+CisgICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnNTY2FsZWREb3duIj48L3ByZT4KKyAgICBTY2FsZT0xLjU6CisgICAgPHByZSBpZD0ibGF5ZXJU
cmVlU2NhbGVkVXAiPjwvcHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zU2NhbGVkVXAiPjwvcHJlPgorPC9kaXY+CisKKzwhLS0gTm8gbGF5ZXIgaW4gYW55IGNhc2Uu
IC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IC0xMDBweCI+PC9kaXY+CisKKzwh
LS0gSGFzIGNvbXBvc2l0ZWQgbGF5ZXIgd2hlbiBzY2FsZWQgZG93bjsgbm8gbGF5ZXIgd2hlbiBu
b3Qgc2NhbGVkIG9yIHNjYWxlZCB1cC4gLS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCI+PC9kaXY+Cis8
ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRvcDogMHB4OyBsZWZ0OiAxMDAwcHgiPjwvZGl2Pgor
Cis8IS0tIEhhcyBjb21wb3NpdGVkIGxheWVyIHdoZW4gbm90IHNjYWxlZCBhbmQgc2NhbGVkIGRv
d247IG5vIGxheWVyIHNjYWxlZCB1cC4gLS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRv
cDogMHB4OyBsZWZ0OiA2MDBweCI+PC9kaXY+CisKKzwhLS0gQWx3YXlzIGhhcyBjb21wb3NpdGVk
IGxheWVyLiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDBw
eCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1v
dXQtb2Ytdmlldy5odG1sCmluZGV4IGMyZjZlNDkyMDMwM2QxNjhlM2EwZTEwYjM2NjAzNzhlMDA5
ZjllZGIuLjUyNjcxOGFiZDA0MzM5NTI3MGI1ZDcwZDhiNmQyM2UwNzZhOTNkNTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9u
LW91dC1vZi12aWV3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbApAQCAtMiw0MCArMiw0MiBAQAog
CiA8aHRtbD4KIDxoZWFkPgotICA8c3R5bGU+Ci0gICAgLmZpeGVkIHsKLSAgICAgIHBvc2l0aW9u
OiBmaXhlZDsKLSAgICAgIHdpZHRoOiAxMHB4OwotICAgICAgaGVpZ2h0OiAxMHB4OwotICAgIH0K
LSAgPC9zdHlsZT4KLQotICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVu
YWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKLQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLSAgICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsYXllcnRyZWUiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJu
YWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7Ci0gICAgICB9LCBmYWxzZSk7Ci0gICAgfQot
ICA8L3NjcmlwdD4KKzxzdHlsZT4KKy5maXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVkOworICAg
IHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKK30KKzwvc3R5bGU+CisKKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9u
KHRydWUpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24o
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWUiKS5pbm5lclRl
eHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyIpLmlu
bmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9j
dW1lbnQpOworICAgIH0sIGZhbHNlKTsKK30KKzwvc2NyaXB0PgogPC9oZWFkPgogCiA8Ym9keT4K
LSAgPGRpdiBzdHlsZT0iaGVpZ2h0OiAxMDAwcHgiPgotICAgIDxwcmUgaWQ9ImxheWVydHJlZSI+
PC9wcmU+Ci0gIDwvZGl2PgotCi0gIDwhLS0gTmVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGVsZW1l
bnRzIGdldHMgaXRzIG93biBsYXllci4gLS0+Ci0gIDxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0i
ei1pbmRleDogLTEiPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6
IC0xOyB0b3A6IC0xMDBweCI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0iei1p
bmRleDogLTE7IHRvcDogMHB4OyBsZWZ0OiAxMDAwcHgiPjwvZGl2PgotCi0gIDwhLS0gVGhpcyBl
bGVtZW50IGdldHMgaXRzIG93biBsYXllciBiZWNhdXNlIGl0IGludGVyc2VjdHMgd2l0aCB0aGUg
dmlld3BvcnQuIC0tPgotICA8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0xOyB0
b3A6IDBweDsgbGVmdDogMHB4Ij48L2Rpdj4KKzxkaXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4K
KyAgICA8cHJlIGlkPSJsYXllclRyZWUiPjwvcHJlPgorICAgIDxwcmUgaWQ9Im1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zIj48L3ByZT4KKzwvZGl2PgorCis8IS0tIE5laXRoZXIgb2YgdGhlIGZv
bGxvd2luZyBlbGVtZW50cyBnZXRzIGl0cyBvd24gbGF5ZXIuIC0tPgorPGRpdiBjbGFzcz0iZml4
ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9
InotaW5kZXg6IC0xOyB0b3A6IC0xMDBweCI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5
bGU9InotaW5kZXg6IC0xOyB0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KKworPCEtLSBU
aGlzIGVsZW1lbnQgZ2V0cyBpdHMgb3duIGxheWVyIGJlY2F1c2UgaXQgaW50ZXJzZWN0cyB3aXRo
IHRoZSB2aWV3cG9ydC4gLS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0x
OyB0b3A6IDBweDsgbGVmdDogMHB4Ij48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDBjOTBi
YzdlYzAwMTk4MjRlNGY1YzE1MTAzOTYyMmZkOWE2MDk0My4uZmJiYzJjOGI3MTkyNTgwYTA0ZTVm
NTljOThiNjQyMTI0YWE3MWQ1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNTg1LDggKzM1ODUsMTAgQEAgY3JidWcuY29tLzEzMjg5
OCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbCBbIEZh
aWx1cmUgUGEKICMgVGltaW5nIG91dCBvbiBzb21lIFdpbmRvd3MgYm90cwogd2Via2l0Lm9yZy9i
Lzg5NTEwIFsgV2luIF0gZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvOTY4MzkgY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4
ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBQYXNzIF0KLXdlYmtpdC5vcmcvYi85NjgzOSBwbGF0Zm9ybS9jaHJvbWl1bS92
aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNm
b3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0K
K3dlYmtpdC5vcmcvYi85NjgzOSBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10
cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi85NjgzOSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTY4MzkgY29t
cG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS1kb3duLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85Njgz
OSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvZ2VvbWV0cnkv
Zml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84OTcwMiBjb21wb3NpdGluZy9zY2Fs
aW5nL3RpbGVkLWxheWVyLXJlY3Vyc2lvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0K
IHdlYmtpdC5vcmcvYi84OTcwMiBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29t
cG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgUGFzcyBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ct
c2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAppbmRleCBiZTQwODBjZjFjYmFhOGRkMWNlYjFmOWRiMTIy
NWM4ZjMxMTE1YjgzLi4zMmVmMGNlNWNjNzU5ZWZiZjdhMDIwZWM0ZjFiYmIxOGJkMjBlMmFjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhw
ZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogKFNjcm9sbGluZyBub2RlCiAgICh2aWV3cG9ydCBy
ZWN0IDAgMCA4MDAgNjAwKQogICAoY29udGVudHMgc2l6ZSA4MDAgNjAwKQotICAoU2Nyb2xsaW5n
IG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgKQorICAo
U2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0
cykKICkKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDE1YTEwZDli
YjE2OGM5MTU1NWNlYTgwNzAzNGFjYzY3YWM0YjcyOGEuLmY0MjE0OWEyZGVmNTMxYzY3YjJlNjJj
YjU2NGRlMWYwMDFjZDExZGUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0wMyAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVk
IHBvc2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc3ltYm9sLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcjoKKwogMjAxMi0xMi0wNCAgS29uZGFwYWxseSBLYWx5YW4gIDxrYWx5YW4ua29u
ZGFwYWxseUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXVtBQ10gVVNFX0dSQVBISUNT
X1NVUkZBQ0Ugc2hvdWxkIGJlIGVuYWJsZWQgb25seSBpZiBYY29tcG9zaXRlIGFuZCBYcmVuZGVy
IGV4dGVuc2lvbnMgYXJlIGZvdW5kLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177789</attachid>
            <date>2012-12-05 10:30:20 -0800</date>
            <delta_ts>2012-12-06 17:45:51 -0800</delta_ts>
            <desc>Workaround Windows linker issue (bug 104136)</desc>
            <filename>bug-102543-20121205182745.patch</filename>
            <type>text/plain</type>
            <size>43252</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg1YzM2NzRhMWEyZTUw
MTY0MGQxYTAxZTgyYzFlMTkxYmFhOTk2ZS4uY2Y2MTUxMTkyM2FkYzc4MzIxYTdkYzk3NzM3ZGU1
Nzc4M2JhNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKTogdG8gZXhjbHVkZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgc2xvdyBzY3JvbGxp
bmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6IHRvIGF2b2lkIHBy
ZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBsYXllcnMuCisKKyAg
ICAgICAgQnkgdGhlIHdheSBmaXhlZCB0aGUgaXNzdWUgb2YgaW50ZXJzZWN0aW9uIGNoZWNraW5n
IG9mIGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHM6CisgICAgICAgIDEpIHNob3VsZCBjb25zaWRl
ciB0aGUgcGFnZSBzY2FsZTsKKyAgICAgICAgMikgZml4IHNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oKSB3aGVuIGNvbnRlbnRTaXplIDwgdmlzaWJsZUNvbnRlbnRSZWN0LgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCisgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpeGVk
UG9zaXRpb25TY3JvbGxPZmZzZXQpOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZp
c2libGVDb250ZW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24pOiBGaXhlZCBpc3N1ZSB3aGVuIGNvbnRlbnRzU2l6ZSA8IHZpc2libGVDb250ZW50
UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxl
U2xvd1JlcGFpbnRGaXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRz
IG5vdCB0byBiZSBwYWludGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6
IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOiBGaXhlZCBp
c3N1ZSBvZiB0ZXN0aW5nIGludGVyc2VjdGlvbiBvZiB2aXNpYmxlIHJlY3QuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDog
QWRkZWQgc2V0dGluZ3MubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0
cy4KKwogMjAxMi0xMi0wNSAgTm9lbCBHb3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAK
ICAgICAgICAgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORyk6IERvbid0IHN3aXp6
bGUgZGVjb2RlIGRvd24gc2FtcGxlZCBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYTA3YmZmMjJkNmY2
NzNkY2EyZWM5NDM3NTEyNDdkM2ZjMTIyZTJlLi41YWM5ZDYyZjNjZjk0NjExYmNkMzE4ZWViMTQ3
NDNjOTg2ZDE2N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMDQgIFhp
YW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxp
bmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQg
ZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgQWRk
IHN5bWJvbC4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZi5pbjoKKwogMjAxMi0xMi0wNSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gRVdLMlVuaXRUZXN0QmFzZS5ld2tfZmF2aWNvbl9kYXRhYmFzZV9hc3luY19p
Y29uX2dldCBpcyBjcmFzaGluZyB3aXRoIG5ldyBFd2tfQ29udGV4dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCA0ZjRiZmVlM2FjZDVhYWFjNTZlZjdlNjBhOWJhMjU1YmY5YjAwMzE0Li4zZDRlOTc5
MDk1NjFkZjc3MmE3Nzg0ZWZkOTIwY2RhNTViYmFkYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtNzYxLDYgKzc2MSw3IEBAIF9fWk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHRFdgogX19aTjdXZWJDb3JlNFBhZ2UyNXN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnNFdgog
X19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19a
TjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAorX19aTjdX
ZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0RXYKIF9fWk43V2Vi
Q29yZTRQYWdlMzJzZXRNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNv
cmU0UGFnZTM1cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJD
b3JlNFBhZ2UzNnNldFNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uc0ViCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA5ZDUzNTk3NjEyYTJhMDk1MTBlZmJiZjY1NWU1YWFkOGRhYjVlMzk1Li4z
NmQ2NDdhZWM0NDgxNDZmY2E3NmE2OTBhMGIzNDFkNTllNWFjODdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTI1NSw2ICsyNTUsMTcgQEAgU3RyaW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgUGFnZTo6bWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKQoreworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQg
PSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dCgpOworCisgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxp
bmdDb29yZGluYXRvci0+bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKwogc3RydWN0IFZpZXdNb2RlSW5mbyB7CiAgICAgY29uc3Qg
Y2hhciogbmFtZTsKICAgICBQYWdlOjpWaWV3TW9kZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0
NDNhYjI2MGIxOTRiMzc1ZWJlZWVmY2RhNzRjMGI2NGZhMzZiMDBjLi42YzM5NTUwZmFlMDVhYmNj
NDQ2MzI0NTY4NWMwMGYyNWRlODBkNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTk2LDYgKzE5Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAKICAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dCgpOworICAgICAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHQoKTsKIAogICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3Nl
dHRpbmdzLmdldCgpOyB9CiAgICAgICAgIFByb2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25z
dCB7IHJldHVybiBtX3Byb2dyZXNzLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggY2Q5NDMyYzJh
ODJkOGUwMTgwMDc0N2M0YjJmZDA4NzRlMDllYjI2Mi4uZGUxZTFlNTc4NjQyNmUzZmZmM2U2NTlj
OWY2MTZhYmUzMTA3NzU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjUsMzcgKzY1LDMyIEBAIFBhc3NS
ZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUo
UGFnZSogcGFnZSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KHBhZ2UpKTsKIH0KIAotc3RhdGljIGludCBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KGludCBz
Y3JvbGxQb3NpdGlvbiwgaW50IG1heFZhbHVlLCBpbnQgc2Nyb2xsT3JpZ2luLCBmbG9hdCBkcmFn
RmFjdG9yKQorc3RhdGljIGludCBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KGludCB2aXNpYmxl
Q29udGVudFNpemUsIGludCBjb250ZW50c1NpemUsIGludCBzY3JvbGxQb3NpdGlvbiwgaW50IHNj
cm9sbE9yaWdpbiwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9vbCBmaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lKQogewotICAgIGlmICghbWF4VmFsdWUpCisgICAgaW50IG1heFZh
bHVlID0gY29udGVudHNTaXplIC0gdmlzaWJsZUNvbnRlbnRTaXplOworICAgIGlmIChtYXhWYWx1
ZSA8PSAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghc2Nyb2xsT3JpZ2luKSB7Ci0g
ICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA8IDApCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlv
biA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uID4gbWF4VmFsdWUpCisgICAg
ICAgIGlmIChzY3JvbGxQb3NpdGlvbiA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+IG1heFZhbHVlKQogICAgICAgICAgICAgc2Nyb2xsUG9z
aXRpb24gPSBtYXhWYWx1ZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoc2Nyb2xsUG9zaXRp
b24gPiAwKQotICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSAwOwotICAgICAgICBlbHNlIGlm
IChzY3JvbGxQb3NpdGlvbiA8IC1tYXhWYWx1ZSkKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9u
ID49IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9u
IDwgLW1heFZhbHVlKQogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSAtbWF4VmFsdWU7CiAg
ICAgfQotICAgIAotICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAqIGRyYWdGYWN0b3I7CisKKyAg
ICBmbG9hdCBkcmFnRmFjdG9yID0gZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/
IDEgOiAoY29udGVudHNTaXplIC0gdmlzaWJsZUNvbnRlbnRTaXplICogZnJhbWVTY2FsZUZhY3Rv
cikgLyBtYXhWYWx1ZTsKKyAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24gKiBkcmFnRmFjdG9yIC8g
ZnJhbWVTY2FsZUZhY3RvcjsKIH0KIAogSW50U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0
aW9uKGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgY29u
dGVudHNTaXplLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBzY3JvbGxPcmlnaW4sIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVtZW50
c0xheW91dFJlbGF0aXZlVG9GcmFtZSkKIHsKLSAgICBJbnRTaXplIG1heE9mZnNldChjb250ZW50
c1NpemUud2lkdGgoKSAtIHZpc2libGVDb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50c1NpemUu
aGVpZ2h0KCkgLSB2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkpOwotICAgIAotICAgIEZsb2F0
U2l6ZSBkcmFnRmFjdG9yID0gZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA/IEZs
b2F0U2l6ZSgxLCAxKSA6IEZsb2F0U2l6ZSgKLSAgICAgICAgKGNvbnRlbnRzU2l6ZS53aWR0aCgp
IC0gdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCkgKiBmcmFtZVNjYWxlRmFjdG9yKSAvIG1heE9m
ZnNldC53aWR0aCgpLAotICAgICAgICAoY29udGVudHNTaXplLmhlaWdodCgpIC0gdmlzaWJsZUNv
bnRlbnRSZWN0LmhlaWdodCgpICogZnJhbWVTY2FsZUZhY3RvcikgLyBtYXhPZmZzZXQuaGVpZ2h0
KCkpOwotCi0gICAgaW50IHggPSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHNjcm9sbFBvc2l0
aW9uLngoKSwgbWF4T2Zmc2V0LndpZHRoKCksIHNjcm9sbE9yaWdpbi54KCksIGRyYWdGYWN0b3Iu
d2lkdGgoKSAvIGZyYW1lU2NhbGVGYWN0b3IpOwotICAgIGludCB5ID0gZml4ZWRQb3NpdGlvblNj
cm9sbE9mZnNldChzY3JvbGxQb3NpdGlvbi55KCksIG1heE9mZnNldC5oZWlnaHQoKSwgc2Nyb2xs
T3JpZ2luLnkoKSwgZHJhZ0ZhY3Rvci5oZWlnaHQoKSAvIGZyYW1lU2NhbGVGYWN0b3IpOwotCisg
ICAgaW50IHggPSBmaXhlZFBvc2l0aW9uU2Nyb2xsT2Zmc2V0KHZpc2libGVDb250ZW50UmVjdC53
aWR0aCgpLCBjb250ZW50c1NpemUud2lkdGgoKSwgc2Nyb2xsUG9zaXRpb24ueCgpLCBzY3JvbGxP
cmlnaW4ueCgpLCBmcmFtZVNjYWxlRmFjdG9yLCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVU
b0ZyYW1lKTsKKyAgICBpbnQgeSA9IGZpeGVkUG9zaXRpb25TY3JvbGxPZmZzZXQodmlzaWJsZUNv
bnRlbnRSZWN0LmhlaWdodCgpLCBjb250ZW50c1NpemUuaGVpZ2h0KCksIHNjcm9sbFBvc2l0aW9u
LnkoKSwgc2Nyb2xsT3JpZ2luLnkoKSwgZnJhbWVTY2FsZUZhY3RvciwgZml4ZWRFbGVtZW50c0xh
eW91dFJlbGF0aXZlVG9GcmFtZSk7CiAgICAgcmV0dXJuIEludFNpemUoeCwgeSk7CiB9CiAKQEAg
LTM0Myw4ICszMzgsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xv
d1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFtZVZpZQogICAgICAgICBSZW5kZXJP
YmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgPSAqaXQ7CiAgICAgICAgIGlmICghdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aWV3cG9ydENvbnN0cmFpbmVkQm94TW9kZWxP
YmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qp
OwotICAgICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdC0+bGF5ZXIo
KS0+YmFja2luZygpKQorICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOworICAgICAgICBp
ZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiAhbGF5ZXItPmlzRml4ZWRQb3NpdGlvbk5vdFRv
QmVQYWludGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzk4LDQgKzM5MywyOSBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCit7CisgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworCisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdD
b29yZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICIpOworICAgIGlmIChyZWFz
b25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBm
aXhlZCBsYXllcnMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
SGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJJcyBpbWFnZSBkb2N1bWVudCwgIik7CisKKyAgICBpZiAoc3RyaW5nQnVpbGRlci5s
ZW5ndGgoKSkKKyAgICAgICAgc3RyaW5nQnVpbGRlci5yZXNpemUoc3RyaW5nQnVpbGRlci5sZW5n
dGgoKSAtIDIpOworICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dChtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKaW5kZXggYzJmMWZhODY1MGVhYjQwMjVkZTNkYmQ5MjZkMGM2Zjk4NTIzNTFm
Mi4uZjI1MTBjY2E1MTI3YmUwZmE4MmM4OTVjZWY3ODlhOGI0ZThlNDgwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBA
IC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NM
YXllciosIGJvb2wpIHsgfQogCisgICAgc3RhdGljIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk7CisgICAgU3RyaW5nIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDVkMzdiZTJmNTMzYWU2YWZlMzU5NDczOWI2ZTg2ZDdjNTU4ZDMzMjMu
LjFhZDVmYTI4YzY3MmRlMWIwNDhjODM5ODVkZTM2M2FhNjg4MzY0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcApAQCAtMjI3LDE4ICsyMjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNv
bgogCiAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCkgewogICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgIHRzIDw8
ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICI7Ci0gICAgICAgIGlmIChtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQotICAgICAgICAgICAgdHMgPDwgIkZvcmNlZCBv
biBtYWluIHRocmVhZCwgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWlu
dE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAi
OwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgdmll
d3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJz
LCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQot
ICAgICAgICAgICAgdHMgPDwgIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIjsKLSAgICAg
ICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCi0gICAgICAgICAgICB0cyA8PCAi
SXMgaW1hZ2UgZG9jdW1lbnQiOwotICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgdHMgPDwg
IihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIiA8PCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQobV9zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSA8PCAiKVxuIjsKICAgICB9CiAKICAgICBpZiAo
bV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAhPSBJbnRQb2ludCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZmIyZDRjNzQ5ZGIxNzhiMWVkODVjZTVi
MGY5YzA3YzRiNzhjYWU3Li45YmEzM2JjODI3MDY4OGU3NjQ2YjlkZDA0MmI2YjlhMWM4NTEyOTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMxMjMsNiAr
MzEyMyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIo
UmVuZGVyTGF5ZXIqIGxheWVyKQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICBpZiAoaXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1
cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0
aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9u
J3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMg
Y2FzZS4KQEAgLTQ3MzYsNiArNDczOSwxOSBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllcjo6
bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tpbmcgPyBt
X2JhY2tpbmctPmxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgOiAwOwogfQorCitib29sIFJlbmRlckxh
eWVyOjppc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFpbnRlZCgpIGNvbnN0Cit7CisgICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBp
ZiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQ
b3NpdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nIGZvciBmaXhlZCBwb3NpdGlvbiBpcyBlbmFibGVkLCBhbGwgZml4ZWQgcG9zaXRpb24gbGF5
ZXJzIHN0YXJ0aW5nIGEgc3RhY2tpbmcgY29udGV4dAorICAgICAgICAvLyBhbmQgbm90IHVuZGVy
IGEgdHJhbnNmb3JtZWQgZWxlbWVudCBzaG91bGQgYmUgY29tcG9zaXRlZCwgb3IgaXMgbm90IHRv
IGJlIHBhaW50ZWQgKGUuZy4gb3V0LW9mLXZpZXcpLgorICAgICAgICBpZiAoIWlzQ29tcG9zaXRl
ZCgpICYmIGlzU3RhY2tpbmdDb250ZXh0KCkgJiYgbV9yZW5kZXJlci0+c3R5bGUoKS0+cG9zaXRp
b24oKSA9PSBGaXhlZFBvc2l0aW9uICYmIG1fcmVuZGVyZXItPmNvbnRhaW5lcigpID09IG1fcmVu
ZGVyZXItPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KICNlbmRpZgogCiBib29sIFJlbmRlckxheWVyOjpwYWludHNXaXRoVHJh
bnNmb3JtKFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMGMwY2Q3OTgyMWJhZTkyYzg5NTk5NGIwYzc3ZDMz
MDExYmVhYWY2OS4uYTJhZjU2YWNlZGViZDk0NmI4ZTkzOGY2ZDlkYzMzMjZmYWMwZWZiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY1NSw2ICs2NTUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbENv
cm5lcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygp
IGNvbnN0IE9WRVJSSURFOworICAgIGJvb2wgaXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQo
KSBjb25zdDsKICNlbHNlCiAgICAgYm9vbCBpc0NvbXBvc2l0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaGFzQ29tcG9zaXRlZE1hc2soKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCA1NjFlYjI4YTZkOWM4YjE4ZmJlOTE0MDZjY2QzZDM4ZjI0Y2FhNzcwLi4z
YmNjYzkwYTMwZDdkM2VjNDNmNzRhNDNkYTdjMmUyYzkyZDkwYmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTk3Niw2
ICsxOTc2LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICBpZiAoRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKSB7CiAgICAgICAgIEludFJlY3Qg
dmlld0JvdW5kcyA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgIElu
dFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGxheWVyLCByb290
UmVuZGVyTGF5ZXIoKSk7CisgICAgICAgIGxheWVyQm91bmRzLnNjYWxlKHBhZ2VTY2FsZUZhY3Rv
cigpKTsKICAgICAgICAgaWYgKCF2aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJCb3VuZHMpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCA5NGEzYjA1MmVjMGNmYjljOTUzOTczNmI4NTZmYWZlNDczZGZkMTRhLi5k
NDI4MGQ5MThlMDAxZDdiODExNmIzNzE1MjU2MDZmYWNmOTk3Zjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDY1LDYgKzE0NjUsMjYgQEAgU3RyaW5nIEludGVybmFs
czo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9u
Q29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiB9
CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oV0lO
KQorICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0MTM2CisgICAgLy8gV2luZG93cyBidWlsZGVyIGZhaWxzIHRvIGxpbmsgdGhlIG5ldyBzeW1i
b2wgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKS4KKyAgICByZXR1cm4g
U3RyaW5nKCk7CisjZWxzZQorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgp
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgfQorCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gcGFnZS0+
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKyNlbmRpZgorfQorCiB2b2lkIElu
dGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1bWVudCogZG9jdW1l
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI5OWYzZTNhYjAwYmI0MWMzNjczYWE2YTIx
NmM1NmI5MGFlOGQ5YjQuLjRiMTM2MTQ4ZDc4NzZjMTZhMjJiNjNhMWNkMDRjODRhNmQwNDI3N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA5LDYgKzIwOSw4IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQq
LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisKICAgICB2b2lkIGdh
cmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDZkYzc1Y2QwMWFlOWJlOWJmZTkxYzdhMGRiODk5
NGU0Y2Q1NmE4YWMuLmE5MTlmZjIxYzA3ZTRjZGIwMTI5ZDJhMGNiNGY3ODEyYzg2OTJhYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE2Niw2ICsxNjYsNyBAQAogICAg
IERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRp
b25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAg
IERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQp
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBET01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAog
ICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmLmluIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluCmluZGV4IDI1
Yjk5OWZiMjc1NWY0ZTNjNDMyN2YwOWVkNzg3ZDVhMTZhNWYwMDMuLmRiZWM2MmM4ODlhZWEyMzhh
ZTQzOTFjMzBlODdjY2YwZGEwYTAzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4KQEAg
LTIyOSw2ICsyMjksNyBAQCBFWFBPUlRTCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNv
dXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0Fy
cmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xv
YmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBA
WgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
QXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtl
cnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBB
VkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVz
QERvY3VtZW50TWFya2VyQDJAQFoKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5k
ZXggOGQwNGU2MDc5YzA1ZTk3ODExOTlkMjUzM2UwNjEwZjkwZmRlOWI1OC4uYzcyNzU1MTNmOWFh
MDhkMWIwNjIzZmM0NWZmNDBhYmZiYTA5Mzc2YiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBA
IC0zMSw2ICszMSw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxM3NldFBhZ2luYXRpb25FUktOU18xMFBh
Z2luYXRpb25FOwogX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFnZVNjYWxlRmFjdG9yRWZSS05TXzhJ
bnRQb2ludEU7CiBfWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVmOwogX1pO
N1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXY7CitfWk43V2ViQ29yZTRQ
YWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2OwogX1pON1dlYkNvcmU0UGFn
ZTE2c2V0Q2FuU3RhcnRNZWRpYUViOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RFOwogX1pON1dlYkNvcmU0
dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMFNoYWRv
d1Jvb3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGE1MjEzNmYwZTc1ZGJjYzNmNzQ1ZjU0ODgyYzM4MjBmOWViOWI5YTUu
LjdhYzQ0YmU2ZGMwYmIzMDhhYTNkNmFkYmE5M2NmOTc2NDA3YWMwODUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAxMi0xMi0wMyAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFp
bnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVkIHBvc2l0aW9u
IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZC9tb2RpZmllZCB0ZXN0IHRvIGVuc3VyZSBzbG93LXNjcm9sbGluZyBpcyBub3QgdHJp
Z2dlcmVkIGJ5IG91dC1vZi12aWV3IGZpeGVkLXBvc2l0aW9uZWQgZWxlbWVudHMsCisgICAgICAg
IGFuZCBlbnN1cmUgb3V0LW9mLXZpZXcgY2hlY2tpbmcgaXMgY29ycmVjdCB3aGVuIHBhZ2UgaXMg
c2NhbGVkLgorCisgICAgICAgIEJUVywgZml4ZWQgc29tZSB0ZXN0cyB0aGF0IHNldCBlbmFibGVD
b21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24gaW4gb25sb2FkIGhhbmRsZXIgd2hpY2ggbWF5IG5v
dCB0YWtlIGVmZmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBsYXRlLgorICAgICAgICBMZWF2ZSB0aGUg
aW1hZ2UgbWlzbWF0Y2hlcyB0byBidWcgOTY4MzkuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sOgor
ICAgICAgICAqIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQt
cGFnZS1zY2FsZS1zY3JvbGwuaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9m
aXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbDoKKyAgICAgICAgKiBjb21w
b3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNj
YWxlLWRvd24uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWw6CisgICAgICAgICogY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1z
Y2FsZS1kb3duLmh0bWw6CisgICAgICAgICogY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9z
aXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS5odG1sOgorICAgICAgICAqIGNv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxl
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0
aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmll
dy5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRyaWdnZXJlZC4gRXhwZWN0YXRp
b24gaXMgdW5jaGFuZ2VkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRy
ZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGFjY29yZGluZyB0byB0aGUg
Y2hhbmdlIG9mIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zLgorCiAyMDEyLTEyLTA1ICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBH
VEsgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS1kb3duLmh0bWwKaW5kZXggNzllNDI2MThmNWQ1NDIyZTkwMzVlMzVhNTAyOWEwMDYy
NzQ3ZjExZC4uZmJiMTc1ZmQ2ZmVjOGE3YjI4NjVkZTRiZjIwZmQxMWNhZTk2MTc2YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29t
cG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1s
CkBAIC0zLDI3ICszLDI1IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWluZGV4IHsK
LSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICBsZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRleCB7Ci0gIHBvc2l0
aW9uOiBmaXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjog
Zml4ZWQ7CisgICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OwogfQogPC9zdHlsZT4KIDxz
Y3JpcHQ+Ci0gIGZ1bmN0aW9uIHNjYWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9y
Rml4ZWRQb3NpdGlvbih0cnVlKTsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxl
RmFjdG9yKDAuNSwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKLSAgfQoraWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5n
Rm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2Fs
ZUZhY3RvcigwLjUsIDAsIDApOworfQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBz
dHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5v
LXotaW5kZXgiPlRFU1Q8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgi
PlRFU1Q8L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRt
bCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWNvbXBv
c2l0ZWQtcGFnZS1zY2FsZS1zY3JvbGwuaHRtbAppbmRleCA0NTJkMWRiMzAxMDc2Y2RkZjI2MjZh
ZjM0OGRlOTEwY2YxYmViNDI1Li44YWFmYjIyMGMwNjM1MDk4ZWE4YmU4MmYwNzJmOWRkNmIzZDI3
YThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1w
b3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtc2Nyb2xsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNj
YWxlLXNjcm9sbC5odG1sCkBAIC0zLDI5ICszLDI3IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhl
ZC1uby16LWluZGV4IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1p
bmRleCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsK
LSAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTsKKyAgICBwb3NpdGlvbjogZml4ZWQ7
CisgICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OworICAgIC13ZWJraXQtdHJhbnNmb3Jt
OnRyYW5zbGF0ZVooMCk7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gc2NhbGUo
KSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAg
ICAgd2luZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgfQot
ICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsMTAwKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgfQoraWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5n
Rm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2Fs
ZUZhY3RvcigyLCAwLCAwKTsKK30KK3dpbmRvdy5zY3JvbGxUbygxMDAsMTAwKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0Pgog
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWln
aHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4K
IDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRoaXMgdGVzdCBzaG91bGQgbm90IGhpdCBh
biBhc3NlcnRpb24gaW4gUmVuZGVyR2VvbWV0cnlNYXAgaW4gZGVidWcgYnVpbGRzPC9kaXY+PGJy
PgogPGRpdiBjbGFzcz0iZml4ZWQtd2l0aC16LWluZGV4Ij5UaGlzIHRlc3Qgc2hvdWxkIG5vdCBo
aXQgYW4gYXNzZXJ0aW9uIGluIFJlbmRlckdlb21ldHJ5TWFwIGluIGRlYnVnIGJ1aWxkczwvZGl2
PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkv
Zml4ZWQtcG9zaXRpb24tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUu
aHRtbAppbmRleCBmYzYzNjUyMGY5NDcxNjg2MzlmZjk1ZDkxNjEyMmYzNzAxNjc5ZGEwLi42ZjJm
NzIyNTZjZTg0Y2MzM2NjOWFhMGIyZTBkZjMxNDQyZGFlMTQwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Ut
c2NhbGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1w
b3NpdGlvbi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbApAQCAtMywyNyArMywyNSBAQAogPGhl
YWQ+CiA8c3R5bGU+CiAuZml4ZWQtbm8tei1pbmRleCB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgbGVmdDogMTBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTBweDsK
IH0KIC5maXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHotaW5kZXg6
IDE7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6IDE7
CisgICAgbGVmdDogMTBweDsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotICBmdW5jdGlvbiBzY2Fs
ZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0g
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB9
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KHRydWUpOwotICB9CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwor
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOworfQoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIDwv
c2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9IndpZHRoOjIw
MDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHlsZT0id2lkdGg6MjAwMHB4O2hlaWdodDoy
MDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48YnI+CiA8
ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rpdj4KIDwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlm
cmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93bi5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS1kb3duLmh0bWwKaW5kZXggYzVhZDQ2YzlhNmQ4ZjQzYjQ0MmE5Njc2MGVkZGRmOTZhODkzNWM4
Yy4uOWY0NmJkYTQ5YWQ0OWJkNDg4ZTA0ZjAxNGRhMGRmY2ZkZmY3NjM5YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNv
bXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1k
b3duLmh0bWwKQEAgLTMsMjggKzMsMjggQEAKIDxoZWFkPgogPHN0eWxlPgogLmZpeGVkLW5vLXot
aW5kZXggewotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIGxlZnQ6IDEwcHg7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4IHsK
LSAgcG9zaXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4OworICAgIHBv
c2l0aW9uOiBmaXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7CiB9CiA8L3N0
eWxlPgogPHNjcmlwdD4KLSAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmludGVy
bmFscykgewotICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBh
Z2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwotICAgIH0KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93LmludGVy
bmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRp
bmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNj
YWxlRmFjdG9yKDAuNSwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCitmdW5jdGlvbiB0ZXN0KCkgewogICAgIHZhciBk
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVudERvY3VtZW50Lm9wZW4o
KTsKICAgICBkLndyaXRlKCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjpmaXhlZDsgei1pbmRleDogMTsg
bGVmdDsgMTBweDsnPlRFU1Q8L2Rpdj4iKTsKICAgICBkLmNsb3NlKCk7Ci0gIH0KK30KIDwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4
O2hlaWdodDoyMDAwcHg7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1j
b21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbAppbmRleCBlNzliOWYyYWViMDljYmM3YTI5ZTkwMTQx
OWQyMGMwNzU3MmQxNWRmLi4yOWE4YzNhMjFkNTAwZjUxMzFkZDhmNGNmYzZjYjg5ZmFlM2Y0ODY1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi1pZnJhbWUtY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24taWZyYW1lLWNvbXBvc2l0ZWQtcGFn
ZS1zY2FsZS5odG1sCkBAIC0zLDI4ICszLDI4IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1u
by16LWluZGV4IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxMHB4OwogfQogLmZpeGVkLXdpdGgtei1pbmRl
eCB7Ci0gIHBvc2l0aW9uOiBmaXhlZDsKLSAgei1pbmRleDogMTsKLSAgbGVmdDogMTBweDsKKyAg
ICBwb3NpdGlvbjogZml4ZWQ7CisgICAgei1pbmRleDogMTsKKyAgICBsZWZ0OiAxMHB4OwogfQog
PC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29t
cG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOwotICAgICAgd2luZG93LmludGVybmFscy5z
ZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXRQYWdl
U2NhbGVGYWN0b3IoMiwgMCwgMCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogCitmdW5jdGlvbiB0ZXN0KCkgewogICAgIHZhciBk
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVudERvY3VtZW50Lm9wZW4o
KTsKICAgICBkLndyaXRlKCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjpmaXhlZDsgei1pbmRleDogMTsg
bGVmdDsgMTBweDsnPlRFU1Q8L2Rpdj4iKTsKICAgICBkLmNsb3NlKCk7Ci0gIH0KK30KIDwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCk7IiBzdHlsZT0id2lkdGg6MjAwMHB4
O2hlaWdodDoyMDAwcHg7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUtZG93
bi5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24t
dHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKaW5kZXggNmMxN2Y5NmVl
MDgwZTdhMzNjNzNjNTA4YTQ0ZjcxMzNhOWU4OGZmNC4uMTUwYTFhMjMyMzU4NGZjMGUzOGZjMzFl
ZmE1OWJmNjM2OTAwMWNhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3du
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2FsZS1kb3duLmh0bWwKQEAgLTMsMjkgKzMs
MjcgQEAKIDxoZWFkPgogPHN0eWxlPgogLmZpeGVkLW5vLXotaW5kZXggewotICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gIGxlZnQ6IDEwcHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVY
KDEwcHgpIHJvdGF0ZSgyMGRlZyk7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6
IDEwcHg7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIw
ZGVnKTsKIH0KIC5maXhlZC13aXRoLXotaW5kZXggewotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIHot
aW5kZXg6IDE7Ci0gIGxlZnQ6IDEwcHg7Ci0gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVY
KDEwcHgpIHJvdGF0ZSgyMGRlZyk7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHotaW5kZXg6
IDE7CisgICAgbGVmdDogMTBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgx
MHB4KSByb3RhdGUoMjBkZWcpOwogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gIGZ1bmN0aW9uIHNj
YWxlKCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsK
LSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Ci0g
ICAgfQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCh0cnVlKTsKLSAgfQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOwor
fQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2FsZSgpOyIgc3R5bGU9Indp
ZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHlsZT0id2lkdGg6MjAwMHB4O2hl
aWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5kZXgiPlRFU1Q8L2Rpdj48
YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8L2Rpdj4KIDwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0
aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBh
Z2Utc2NhbGUuaHRtbAppbmRleCBmOWEwYzM3Mzg3M2Y5NWU0ZjJhNWM3N2ZmZDEzZDhmNDZlYmUy
YzZkLi41N2Y3MmUzZDE5MzI3ODI3NDliMDZjNTA0MDU5MGU2MjJiODM2Y2Y4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zv
cm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tdHJhbnNmb3JtLWNvbXBvc2l0ZWQtcGFnZS1zY2Fs
ZS5odG1sCkBAIC0zLDI5ICszLDI3IEBACiA8aGVhZD4KIDxzdHlsZT4KIC5maXhlZC1uby16LWlu
ZGV4IHsKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAxMHB4OwotICAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICBsZWZ0OiAxMHB4OworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xh
dGVYKDEwcHgpIHJvdGF0ZSgyMGRlZyk7CiB9CiAuZml4ZWQtd2l0aC16LWluZGV4IHsKLSAgcG9z
aXRpb246IGZpeGVkOwotICB6LWluZGV4OiAxOwotICBsZWZ0OiAxMHB4OwotICAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KSByb3RhdGUoMjBkZWcpOworICAgIHBvc2l0aW9uOiBm
aXhlZDsKKyAgICB6LWluZGV4OiAxOworICAgIGxlZnQ6IDEwcHg7CisgICAgLXdlYmtpdC10cmFu
c2Zvcm06IHRyYW5zbGF0ZVgoMTBweCkgcm90YXRlKDIwZGVnKTsKIH0KIDwvc3R5bGU+CiA8c2Ny
aXB0PgotICBmdW5jdGlvbiBzY2FsZSgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykgewot
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZp
eGVkUG9zaXRpb24odHJ1ZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZh
Y3RvcigyLCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwotICB9CitpZiAod2luZG93LmludGVybmFscykg
eworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JG
aXhlZFBvc2l0aW9uKHRydWUpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFj
dG9yKDIsIDAsIDApOworfQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzY2Fs
ZSgpOyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4OyI+Cis8Ym9keSBzdHlsZT0i
d2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7Ij4KIDxkaXYgY2xhc3M9ImZpeGVkLW5vLXotaW5k
ZXgiPlRFU1Q8L2Rpdj48YnI+CiA8ZGl2IGNsYXNzPSJmaXhlZC13aXRoLXotaW5kZXgiPlRFU1Q8
L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1v
dXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1Mzc2NjU0ODI5ZGNi
YmNkOWRmOGQyYmUyYjJjMDE2MTA2M2U2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1z
Y2FsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjMgQEAKK05vdCBzY2FsZWQ6CisoR3JhcGhp
Y3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChH
cmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAgICAgKGNoaWxk
cmVuIDIKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gNjAwLjAw
IDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAg
ICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTAuNToKKyhHcmFwaGljc0xheWVyCisg
IChib3VuZHMgNDAwLjAwIDUwOC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgKGFuY2hvciAwLjAwIDAuMDApCisgICAgICAoYm91bmRzIDgwMC4wMCAxMDE2LjAw
KQorICAgICAgKHRyYW5zZm9ybSBbMC41MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMC41MCAwLjAw
IDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCisgICAg
ICAoY2hpbGRyZW4gNAorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlv
biA4LjAwIDEwMDguMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAg
KQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAxMDAwLjAwIDAu
MDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAg
ICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVy
CisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgKQorICAgICAgKQorICAg
ICkKKyAgKQorKQorU2NhbGU9MS41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyAxMjcyLjAw
IDE1MjQuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChhbmNo
b3IgMC4wMCAwLjAwKQorICAgICAgKGJvdW5kcyA4NDguMDAgMTAxNi4wMCkKKyAgICAgICh0cmFu
c2Zvcm0gWzEuNTAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuNTAgMC4wMCAwLjAwXSBbMC4wMCAw
LjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgKGNoaWxkcmVuIDEK
KyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQor
ICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3
LXNjYWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYzM2Q3Y2Rk
ZDhlMTE4MDI0MzA0MWJhMjYyZTg5MDE1YTdjM2ViMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12
aWV3LXNjYWxlZC5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzdHlsZT4KKy5maXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHdp
ZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKK30KKzwvc3R5bGU+CisKKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2lmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9y
Rml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Rml4ZWRQb3Np
dGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBhZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsYXllclRyZWUiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRv
Y3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zKGRvY3VtZW50KTsKKworICAgICAgICBpbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9y
KDAuNSwgMCwgMCk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWREb3duIikuaW5uZXJU
ZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRE
b3duIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRv
Y3VtZW50KTsKKworICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigxLjUs
IDAsIDApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXllclRyZWVTY2FsZWRVcCIpLmlubmVy
VGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1Nj
YWxlZFVwIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
KGRvY3VtZW50KTsKKworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0sIDApOworICAgIH0sIGZhbHNlKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4K
KyAgICBOb3Qgc2NhbGVkOgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+CisgICAgPHBy
ZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJlPgorICAgIFNjYWxlPTAuNToK
KyAgICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWREb3duIj48L3ByZT4KKyAgICA8cHJlIGlkPSJt
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc1NjYWxlZERvd24iPjwvcHJlPgorICAgIFNjYWxlPTEu
NToKKyAgICA8cHJlIGlkPSJsYXllclRyZWVTY2FsZWRVcCI+PC9wcmU+CisgICAgPHByZSBpZD0i
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNTY2FsZWRVcCI+PC9wcmU+Cis8L2Rpdj4KKworPCEt
LSBObyBsYXllciBpbiBhbnkgY2FzZS4gLS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InRv
cDogLTEwMHB4Ij48L2Rpdj4KKworPCEtLSBIYXMgY29tcG9zaXRlZCBsYXllciB3aGVuIHNjYWxl
ZCBkb3duOyBubyBsYXllciB3aGVuIG5vdCBzY2FsZWQgb3Igc2NhbGVkIHVwLiAtLT4KKzxkaXYg
Y2xhc3M9ImZpeGVkIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7
IGxlZnQ6IDEwMDBweCI+PC9kaXY+CisKKzwhLS0gSGFzIGNvbXBvc2l0ZWQgbGF5ZXIgd2hlbiBu
b3Qgc2NhbGVkIGFuZCBzY2FsZWQgZG93bjsgbm8gbGF5ZXIgc2NhbGVkIHVwLiAtLT4KKzxkaXYg
Y2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDYwMHB4Ij48L2Rpdj4KKworPCEt
LSBBbHdheXMgaGFzIGNvbXBvc2l0ZWQgbGF5ZXIuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiIHN0
eWxlPSJ0b3A6IDBweDsgbGVmdDogMHB4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9z
aXRpb24tb3V0LW9mLXZpZXcuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNy
ZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3Lmh0bWwKaW5kZXggYzJmNmU0OTIwMzAz
ZDE2OGUzYTBlMTBiMzY2MDM3OGUwMDlmOWVkYi4uNTI2NzE4YWJkMDQzMzk1MjcwYjVkNzBkOGI2
ZDIzZTA3NmE5M2Q1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy5o
dG1sCkBAIC0yLDQwICsyLDQyIEBACiAKIDxodG1sPgogPGhlYWQ+Ci0gIDxzdHlsZT4KLSAgICAu
Zml4ZWQgewotICAgICAgcG9zaXRpb246IGZpeGVkOwotICAgICAgd2lkdGg6IDEwcHg7Ci0gICAg
ICBoZWlnaHQ6IDEwcHg7Ci0gICAgfQotICA8L3N0eWxlPgotCi0gIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRy
dWUpOwotCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKLQotICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxheWVydHJlZSIpLmlu
bmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKLSAg
ICAgIH0sIGZhbHNlKTsKLSAgICB9Ci0gIDwvc2NyaXB0PgorPHN0eWxlPgorLmZpeGVkIHsKKyAg
ICBwb3NpdGlvbjogZml4ZWQ7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4Owor
fQorPC9zdHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21w
b3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxheWVyVHJlZSIpLmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNU
ZXh0KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5tYWluVGhy
ZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVudCk7CisgICAgfSwgZmFsc2UpOworfQorPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiAKIDxib2R5PgotICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+Ci0g
ICAgPHByZSBpZD0ibGF5ZXJ0cmVlIj48L3ByZT4KLSAgPC9kaXY+Ci0KLSAgPCEtLSBOZWl0aGVy
IG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgZ2V0cyBpdHMgb3duIGxheWVyLiAtLT4KLSAgPGRp
diBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMSI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9
ImZpeGVkIiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogLTEwMHB4Ij48L2Rpdj4KLSAgPGRpdiBj
bGFzcz0iZml4ZWQiIHN0eWxlPSJ6LWluZGV4OiAtMTsgdG9wOiAwcHg7IGxlZnQ6IDEwMDBweCI+
PC9kaXY+Ci0KLSAgPCEtLSBUaGlzIGVsZW1lbnQgZ2V0cyBpdHMgb3duIGxheWVyIGJlY2F1c2Ug
aXQgaW50ZXJzZWN0cyB3aXRoIHRoZSB2aWV3cG9ydC4gLS0+Ci0gIDxkaXYgY2xhc3M9ImZpeGVk
IiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogMHB4OyBsZWZ0OiAwcHgiPjwvZGl2PgorPGRpdiBz
dHlsZT0iaGVpZ2h0OiAxMDAwcHgiPgorICAgIDxwcmUgaWQ9ImxheWVyVHJlZSI+PC9wcmU+Cisg
ICAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiPjwvcHJlPgorPC9kaXY+CisK
KzwhLS0gTmVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIGdldHMgaXRzIG93biBsYXll
ci4gLS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9InotaW5kZXg6IC0xIj48L2Rpdj4KKzxk
aXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogLTEwMHB4Ij48L2Rpdj4K
KzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogMHB4OyBsZWZ0OiAx
MDAwcHgiPjwvZGl2PgorCis8IS0tIFRoaXMgZWxlbWVudCBnZXRzIGl0cyBvd24gbGF5ZXIgYmVj
YXVzZSBpdCBpbnRlcnNlY3RzIHdpdGggdGhlIHZpZXdwb3J0LiAtLT4KKzxkaXYgY2xhc3M9ImZp
eGVkIiBzdHlsZT0iei1pbmRleDogLTE7IHRvcDogMHB4OyBsZWZ0OiAwcHgiPjwvZGl2PgogPC9i
b2R5PgogPC9odG1sPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA0MGM5MGJjN2VjMDAxOTgyNGU0ZjVjMTUxMDM5NjIyZmQ5YTYwOTQz
Li5mYmJjMmM4YjcxOTI1ODBhMDRlNWY1OWM5OGI2NDIxMjRhYTcxZDUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM1ODUsOCArMzU4
NSwxMCBAQCBjcmJ1Zy5jb20vMTMyODk4IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9jbG9zZS5odG1sIFsgRmFpbHVyZSBQYQogIyBUaW1pbmcgb3V0IG9uIHNvbWUgV2lu
ZG93cyBib3RzCiB3ZWJraXQub3JnL2IvODk1MTAgWyBXaW4gXSBnYW1lcGFkL2dhbWVwYWQtcG9s
bGluZy1hY2Nlc3MuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi85NjgzOSBj
b21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1w
YWdlLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQotd2Via2l0Lm9yZy9iLzk2
ODM5IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy9nZW9tZXRy
eS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzk2ODM5IGNvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk2ODM5IHBsYXRmb3JtL2Nocm9t
aXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10
cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi85NjgzOSBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10
cmFuc2Zvcm0tY29tcG9zaXRlZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzk2ODM5IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdh
cmVjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi10cmFuc2Zvcm0tY29tcG9zaXRl
ZC1wYWdlLXNjYWxlLWRvd24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
Lzg5NzAyIGNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzg5NzAyIHBsYXRmb3JtL2Nocm9t
aXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy9zY2FsaW5nL3RpbGVkLWxheWVyLXJlY3Vy
c2lvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3Jv
bGxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4
MGNmMWNiYWE4ZGQxY2ViMWY5ZGIxMjI1YzhmMzExMTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2Ew
MjBlYzRmMWJiYjE4YmQyMGUyYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmct
dHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xs
aW5nIG5vZGUKICAgKHZpZXdwb3J0IHJlY3QgMCAwIDgwMCA2MDApCiAgIChjb250ZW50cyBzaXpl
IDgwMCA2MDApCi0gIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cg
cmVwYWludCBvYmplY3RzLCApCisgIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTog
SGFzIHNsb3cgcmVwYWludCBvYmplY3RzKQogKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggMTVhMTBkOWJiMTY4YzkxNTU1Y2VhODA3MDM0YWNjNjdhYzRiNzI4YS4u
ZjQyMTQ5YTJkZWY1MzFjNjdiMmU2MmNiNTY0ZGUxZjAwMWNkMTFkZSAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAg
KiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTEyLTA0ICBLb25kYXBh
bGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XVtXSzJdW0FDXSBVU0VfR1JBUEhJQ1NfU1VSRkFDRSBzaG91bGQgYmUgZW5hYmxlZCBvbmx5IGlm
IFhjb21wb3NpdGUgYW5kIFhyZW5kZXIgZXh0ZW5zaW9ucyBhcmUgZm91bmQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178122</attachid>
            <date>2012-12-06 17:45:56 -0800</date>
            <delta_ts>2012-12-07 11:58:47 -0800</delta_ts>
            <desc>Patch (independent with the blocking bugs)</desc>
            <filename>bug-102543-20121207014320.patch</filename>
            <type>text/plain</type>
            <size>20606</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjllYTIwY2I3NzAyMzlj
MTU3ZmFmZmQ1M2NjMzZjNmE1MmVmOWVkOC4uY2RiM2FlMTNhODZhNGJiMjI2NTcwOTRiZDIzZWEw
NTA2MmEyODVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEyLTAzICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBv
c2l0aW9uKCksIHJlbW92ZSBvdXQtb2YtdmlldyBlbGVtZW50cyBmcm9tIHRoZSBmcmFtZVZpZXcn
cyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzLCBzbyB0aGF0IHRoZXkgd29uJ3QgY2F1c2Ug
c2xvdyBzY3JvbGxpbmcuCisgICAgICAgIDIpIGluIFJlbmRlckxheWVyOjpwYWludExheWVyKCk6
IHRvIGF2b2lkIHByZS1wYWludGluZyB0aGUgb3V0LW9mLXZpZXcgZml4ZWQtcG9zaXRpb25lZCBs
YXllcnMuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQt
cG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKKyAgICAgICAgICAgICAgY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAorCisgICAg
ICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpk
dW1wUHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3RzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXIpOiBEb24ndCBwYWludCBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50LgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRp
b24pOiBSZW1vdmUgb3V0LW9mLXZpZXcgZml4ZWQgZWxlbWVudCBmcm9tIGZyYW1lVmlldydzIHZp
ZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkZWQgc2V0dGluZ3MubWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnMgZm9yIGxheW91dCB0ZXN0cy4KKwogMjAxMi0xMi0wNiAgQW5k
cmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFJlZ2lvbnNdIFJl
bW92ZSB0aGUgc2FuaXRpemUgbWVjaGFuaXNtIGZyb20gTGluZUZyYWdtZW50YXRpb25EYXRhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNjEwZjBjODMyZTI0OGQxMzNmNWNiZjAyMjc4NmU5Yzc1YzBjNGQ5Ni4uMGEy
NTFlNjIwYTQxM2U5NTQwZjQ2MDI5YmRiYjY1ZDg1Y2E4MmE0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTEyLTA0ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVw
YWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRp
b24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMjU0MworCisgICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0
Mi5kZWYuaW46CisKIDIwMTItMTItMDYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzY5MDAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IDVhNDVkNWRlMDVlMmQ2MTE3ZTY4MzExMWQzMjI0NDgzZTU1
NzRhYWUuLmQ0Zjg2OTcyMTNkNzMyMWExMmYzYWY2MGFjYTMwY2M5MTgwNjAwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC03NjEsNiArNzYxLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyNHNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplckNo
dW5rU2l6ZUVpCiBfX1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVE
ZWxheUVkCitfX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHRFdgogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c0V2CiBfX1pON1dlYkNvcmU0UGFnZTM2c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDlkNTM1OTc2MTJhMmEwOTUxMGVmYmJmNjU1ZTVh
YWQ4ZGFiNWUzOTUuLjM2ZDY0N2FlYzQ0ODE0NmZjYTc2YTY5MGEwYjM0MWQ1OWU1YWM4N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMjU1LDYgKzI1NSwxNyBAQCBTdHJpbmcgUGFnZTo6c2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBQ
YWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCit7CisgICAgaWYgKERvY3Vt
ZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVu
dC0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0Fz
VGV4dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01vZGVJbmZv
IHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCmluZGV4IDQ0M2FiMjYwYjE5NGIzNzVlYmVlZWZjZGE3NGMwYjY0ZmEzNmIwMGMuLjZj
Mzk1NTBmYWUwNWFiY2M0NDYzMjQ1Njg1YzAwZjI1ZGU4MGQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC0xOTYsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAogICAgICAgICBTdHJpbmcgc2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisgICAgICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpOwogCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBw
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCBjZDk0MzJjMmE4MmQ4ZTAxODAwNzQ3YzRiMmZkMDg3NGUwOWViMjYyLi4wNzUzYzdmY2Q2
MWY0M2E4MWYxNjIwOGRkZGI2NDZmNWZkZGQ1ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0zOTgsNCAr
Mzk4LDI5IEBAIFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxp
bmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnMgcmVhc29ucykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7CisKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRP
bk1haW5UaHJlYWQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJGb3JjZWQgb24gbWFp
biB0aHJlYWQsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhh
c1Nsb3dSZXBhaW50T2JqZWN0cykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBz
bG93IHJlcGFpbnQgb2JqZWN0cywgIik7CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0Zp
eGVkTGF5ZXJzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHZpZXdwb3J0IGNv
bnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7Cisg
ICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9i
amVjdHMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgbm9uLWxheWVyIGZpeGVk
IG9iamVjdHMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Oklz
SW1hZ2VEb2N1bWVudCkKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIklzIGltYWdlIGRv
Y3VtZW50LCAiKTsKKworICAgIGlmIChzdHJpbmdCdWlsZGVyLmxlbmd0aCgpKQorICAgICAgICBz
dHJpbmdCdWlsZGVyLnJlc2l6ZShzdHJpbmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7CisgICAgcmV0
dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KG1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBj
MmYxZmE4NjUwZWFiNDAyNWRlM2RiZDkyNmQwYzZmOTg1MjM1MWYyLi5mMjUxMGNjYTUxMjdiZTBm
YTgyYzg5NWNlZjc4OWE4YjRlOGU0ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0
aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAK
KyAgICBzdGF0aWMgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5U
aHJlYWRTY3JvbGxpbmdSZWFzb25zKTsKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNBc1RleHQoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNWQz
N2JlMmY1MzNhZTZhZmUzNTk0NzM5YjZlODZkN2M1NThkMzMyMy4uMWFkNWZhMjhjNjcyZGUxYjA0
OGM4Mzk4NWRlMzYzYWE2ODgzNjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0y
MjcsMTggKzIyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJv
cGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uCiAKICAgICBpZiAobV9zaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CiAgICAgICAgIHdyaXRl
SW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFp
biB0aHJlYWQgYmVjYXVzZTogIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1h
aW5UaHJlYWQpCi0gICAgICAgICAgICB0cyA8PCAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiOwot
ICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
ICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAg
ICAgIHRzIDw8ICJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICI7Ci0gICAgICAgIGlmIChtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0Zp
eGVkTGF5ZXJzKQotICAgICAgICAgICAgdHMgPDwgIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBv
YmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICI7Ci0gICAgICAgIGlmICht
X3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdD
b29yZGluYXRvcjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAi
SGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OklzSW1hZ2VEb2N1bWVudCkKLSAgICAgICAgICAgIHRzIDw8ICJJcyBpbWFnZSBkb2N1bWVudCI7
Ci0gICAgICAgIHRzIDw8ICIpXG4iOworICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWlu
IHRocmVhZCBiZWNhdXNlOiAiIDw8IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQpIDw8ICIpXG4iOwogICAgIH0KIAogICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uICE9IEludFBvaW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IGRmYjJkNGM3NDlkYjE3OGIxZWQ4NWNlNWIwZjljMDdjNGI3OGNhZTcuLmU2
YWNmZDA4M2QyMjRiZmMyM2NlOTZjMDA3OTU1MDM2YjAzMjNmMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzEyMyw2ICszMTIzLDE0IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVy
KQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAg
IGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhl
ZFBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4gYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgZm9yIGZpeGVkIHBvc2l0aW9uIGlzIGVuYWJsZWQsIGFsbCBmaXhlZCBwb3NpdGlvbiBs
YXllcnMgc3RhcnRpbmcgYSBzdGFja2luZyBjb250ZXh0CisgICAgICAgIC8vIGFuZCBub3QgdW5k
ZXIgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHNob3VsZCBiZSBjb21wb3NpdGVkLCBvciBpcyBub3Qg
dG8gYmUgcGFpbnRlZCAoZS5nLiBvdXQtb2YtdmlldykuCisgICAgICAgIGlmICghaXNDb21wb3Np
dGVkKCkgJiYgaXNTdGFja2luZ0NvbnRleHQoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLT5wb3Np
dGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbV9yZW5kZXJlci0+Y29udGFpbmVyKCkgPT0gbV9y
ZW5kZXJlci0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChp
c0NvbXBvc2l0ZWQoKSkgewogICAgICAgICAvLyBUaGUgdXBkYXRpbmdDb250cm9sVGludHMoKSBw
YWludGluZyBwYXNzIGdvZXMgdGhyb3VnaCBjb21wb3NpdGluZyBsYXllcnMsCiAgICAgICAgIC8v
IGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGNsaXAgcmVjdHMgY29t
cHV0ZWQgd2l0aCB0aGUgd3Jvbmcgcm9vdCBpbiB0aGlzIGNhc2UuCkBAIC00NzM2LDYgKzQ3NDQs
NyBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllcjo6bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBj
b25zdAogewogICAgIHJldHVybiBtX2JhY2tpbmcgPyBtX2JhY2tpbmctPmxheWVyRm9yU2Nyb2xs
Q29ybmVyKCkgOiAwOwogfQorCiAjZW5kaWYKIAogYm9vbCBSZW5kZXJMYXllcjo6cGFpbnRzV2l0
aFRyYW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDU2
MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3NzAuLjhmMTBmZjAzYjkyYjVkMTlh
MzlhMjc0MWQ3NDcwNjJiZjFiMjE1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xOTU2LDEwICsxOTU2LDYgQEAgYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihS
ZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICBpZiAoIShyZW5kZXJlci0+aXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgJiYgcmVuZGVyZXItPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlv
biAmJiBsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBtX3JlbmRlclZpZXctPmRvY3VtZW50KCkt
PnNldHRpbmdzKCkpCi0gICAgICAgIGlmICghc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7CiAg
ICAgLy8gSWYgdGhlIHJlbmRlcmVyIGlzIG5vdCBob29rZWQgdXAgeWV0IHRoZW4gd2UgaGF2ZSB0
byB3YWl0IHVudGlsIGl0IGlzLgogICAgIGlmICghY29udGFpbmVyKSB7CkBAIC0xOTY3LDYgKzE5
NjMsOSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmll
dygpOworICAgIEFTU0VSVChmcmFtZVZpZXcpOworCiAgICAgLy8gRG9uJ3QgcHJvbW90ZSBmaXhl
ZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBkZXNjZW5kYW50cyBvZiB0cmFuc2Zvcm1lZCBl
bGVtZW50cy4KICAgICAvLyBUaGV5IHdpbGwgc3RheSBmaXhlZCB3cnQgdGhlIHRyYW5zZm9ybWVk
IGVsZW1lbnQgcmF0aGVyIHRoYW4gdGhlIGVuY2xvc2luZyBmcmFtZS4KICAgICBpZiAoY29udGFp
bmVyICE9IG1fcmVuZGVyVmlldykKQEAgLTE5NzYsMTAgKzE5NzUsMTggQEAgYm9vbCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmpl
Y3QqIHJlbmRlcmUKICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXct
PmZyYW1lVmlldygpKSB7CiAgICAgICAgIEludFJlY3Qgdmlld0JvdW5kcyA9IGZyYW1lVmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgIEludFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxj
dWxhdGVDb21wb3NpdGVkQm91bmRzKGxheWVyLCByb290UmVuZGVyTGF5ZXIoKSk7Ci0gICAgICAg
IGlmICghdmlld0JvdW5kcy5pbnRlcnNlY3RzKGxheWVyQm91bmRzKSkKKyAgICAgICAgaWYgKCF2
aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJCb3VuZHMpKSB7CisgICAgICAgICAgICBmcmFtZVZp
ZXctPnJlbW92ZVZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QocmVuZGVyZXIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogCisgICAgZnJhbWVWaWV3LT5hZGRW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KHJlbmRlcmVyKTsKKworICAgIGlmIChTZXR0aW5ncyog
c2V0dGluZ3MgPSBtX3JlbmRlclZpZXctPmRvY3VtZW50KCktPnNldHRpbmdzKCkpCisgICAgICAg
IGlmICghc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5h
YmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3NjZhMGUyZDlmZjc0MTQz
MDMwNzY2MDU3ZGM5YjgzZGRjNjRiZGJiLi5mN2UwZTIwMjZkOWNhMzFjZDY4MjQ1ODA4MDJiODRl
N2FiYTk5MjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDU3LDYg
KzE0NTcsMjAgQEAgU3RyaW5nIEludGVybmFsczo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERv
Y3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiB9CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwYWdlLT5tYWluVGhy
ZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpOworfQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFn
ZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IDViYzI2ODU2ODFjODBkMWJmOWE2MDZjY2QyYmU3NmU0ZWFhNzVkNTAu
LmIxMjFkOWY3YWUxZDlmZmNkNjNjNDFkNDQ3MTBjNmU3MTI2M2EwYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaApAQCAtMjA4LDYgKzIwOCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
cmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAg
IFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CiAKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1l
bnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2
b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IGNkZDNlMzg0ZjgwYjA5YzBmZTlkMGQ3NDg5ZGUyMmI4NjNlMGY0NDkuLjE2
M2U2NzY1N2U0ODhkNjE4Y2Q0ZDdkNTI4YzNhNzcxYTg0ZTk5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTE2NSw2ICsxNjUsNyBAQAogICAgIERPTVN0cmluZyBsYXll
clRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQg
c2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3Jv
bGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKKyAgICBET01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9j
dW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBy
ZXBhaW50UmVjdHNBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluIGIv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluCmluZGV4IDRlNjcxNzhlODA5N2I3NDg2
NjdkYzM3MmZkNDI4ODdjOTFhMjY2ODIuLmFhZmU0YjZmYmE2NjA3OTc2NDhjODEwZTE2NTdjZmMy
ZjdlYjVmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4KQEAgLTIyOCw2ICsyMjgsNyBA
QCBFWFBPUlRTCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJD
b3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlB
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8k
UGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFz
dENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFC
RV9OWFoKKyAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2Vi
Q29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2Vy
QFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2Vy
QDJAQFoKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJD
b3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNWI3Nzc3NjdjYTYy
NTc4ZWVhYWJlZjI2MWU4Y2VlNjZhNWM1NjVjOS4uMTEwYWRjM2Y3NGM5ZWY3YzM0MjIzZjk2ODBl
YzFiNzZiMDc2MmViMyAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0zMSw2ICszMSw3IEBA
IF9aTjdXZWJDb3JlNFBhZ2UxM3NldFBhZ2luYXRpb25FUktOU18xMFBhZ2luYXRpb25FOwogX1pO
N1dlYkNvcmU0UGFnZTE4c2V0UGFnZVNjYWxlRmFjdG9yRWZSS05TXzhJbnRQb2ludEU7CiBfWk43
V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVmOwogX1pON1dlYkNvcmU0UGFnZTI0
c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXY7CitfWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2OwogX1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRN
ZWRpYUViOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhl
Y1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDgwZjA0ZTY0Nzk2ZjQ2ZDU1YjkzZGYwNjA4ZmU1OTRhOThiMTI5NDcuLmI0NzlhYmQ4MTY5ZGFi
NjMyZDQzNzY4M2NmYTA5MzQ2M2UyODZkMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0x
Mi0wMyAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdCgp
IHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24u
aHRtbDogRW5zdXJlIHNsb3ctc2Nyb2xsaW5nIGlzIG5vdCB0cmlnZ2VyZWQuCisgICAgICAgICog
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Ny
b2xsLXJlYXNvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBVcGRhdGVk
IGFjY29yZGluZyB0byB0aGUgY2hhbmdlIG9mIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zLgor
CiAyMDEyLTEyLTA2ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5pZnkgU1ZHJ3MgYW5pbWF0aW9uIGFuZCB0YXJnZXQgdHJhY2tpbmcgc3lzdGVtcy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0
aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Ny
b2xsLXJlYXNvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkyN2JmYjk2M2VkOWZhNWEwZjBl
YmRmYWMwMDA1YTk4ZTVmNGNkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1y
ZWFzb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorTWFpbiB0aHJlYWQgc2Nyb2xsaW5n
IHJlYXNvbnMgc2hvdWxkIGJlIGJsYW5rOgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwt
cmVhc29uLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhl
ZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3
ODQ2NGU3YzU4MGYwZmJlOGI5ZjI5NGNiZWIzNGExNTkwNzhjNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91
dC1vZi12aWV3LXNjcm9sbC1yZWFzb24uaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUg
aHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgLmZpeGVkIHsKKyAgICBwb3NpdGlv
bjogZml4ZWQ7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4OworICAgIHotaW5k
ZXg6IC0xOworICB9Cis8L3N0eWxlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0RW5hYmxlQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uKHRydWUpOworCisgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyIpLmlubmVyVGV4dCA9
IHdpbmRvdy5pbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOwor
ICAgIH0sIGZhbHNlKTsKKyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBz
dHlsZT0iaGVpZ2h0OiAxMDAwcHgiPgorICBNYWluIHRocmVhZCBzY3JvbGxpbmcgcmVhc29ucyBz
aG91bGQgYmUgYmxhbms6CisgIDxwcmUgaWQ9Im1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIj48
L3ByZT4KKzwvZGl2PgorCis8IS0tIG91dCBvZiB2aWV3IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQg
c2hvdWxkIG5vdCB0cmlnZ2VyIG1haW4gdGhyZWFkIHNjcm9sbGluZy4gLS0+Cis8ZGl2IGNsYXNz
PSJmaXhlZCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGlu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKaW5kZXggYmU0MDgwY2Yx
Y2JhYThkZDFjZWIxZjlkYjEyMjVjOGYzMTExNWI4My4uMzJlZjBjZTVjYzc1OWVmYmY3YTAyMGVj
NGYxYmJiMThiZDIwZTJhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVl
LXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIChTY3JvbGxpbmcg
bm9kZQogICAodmlld3BvcnQgcmVjdCAwIDAgODAwIDYwMCkKICAgKGNvbnRlbnRzIHNpemUgODAw
IDYwMCkKLSAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMgc2xvdyByZXBh
aW50IG9iamVjdHMsICkKKyAgKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiBIYXMg
c2xvdyByZXBhaW50IG9iamVjdHMpCiApCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA1NzU2ZmJmOGM3MjEwNzc0NmQ5YjIwMzVmMGFjZGNlMmQyMzgwZGVmLi43YTEy
MTAzYzkwMzZmODZlNmRiZmRmNTk4MGRiNjFlODVhYTJmNWUwIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMDMgIFhpYW56aHUg
V2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVk
ZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN5bWJvbC4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTItMDYgIExhc3psbyBHb21i
b3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBSZW1vdmUgRU5BQkxF
X0dMSUJfU1VQUE9SVCBDTWFrZSB2YXJpYWJsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178247</attachid>
            <date>2012-12-07 11:58:52 -0800</date>
            <delta_ts>2012-12-07 13:32:41 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>bug-102543-20121207195615.patch</filename>
            <type>text/plain</type>
            <size>22305</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjllYTIwY2I3NzAyMzlj
MTU3ZmFmZmQ1M2NjMzZjNmE1MmVmOWVkOC4uNmFhMDFmMThhYjk5Y2FmYmI2ZWU5YzYxYTQ5NGUx
ZDA2Nzk1M2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTA3ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKSwgZXhjbHVkZSBpbnZpc2libGUgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMsIHNv
IHRoYXQgdGhleSB3b24ndCBjYXVzZSBzbG93IHNjcm9sbGluZy4KKyAgICAgICAgMikgaW4gUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXIoKTogdG8gYXZvaWQgcHJlLXBhaW50aW5nIHRoZSBvdXQtb2Yt
dmlldyBmaXhlZC1wb3NpdGlvbmVkIGxheWVycy4KKworICAgICAgICBBZGRlZCB3aW5kb3cuaW50
ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgZm9yIHRlc3RpbmcuCisK
KyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24t
b3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKKyAgICAgICAgICAgICAgY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0
cyk6IEV4Y2x1ZGUgaW52aXNpYmxlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1w
UHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3RzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXIpOiBEb24ndCBwYWludCBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50LgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNGaXhlZFBvc2l0
aW9uTm90VG9CZVBhaW50ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgor
ICAgICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpp
c0ZpeGVkUG9zaXRpb25DYW5CZUNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdG
b3JQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
OgorICAgICAgICAoUmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGRlZCBzZXR0aW5n
cy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyBmb3IgbGF5b3V0IHRlc3RzLgorCiAyMDEyLTEy
LTA2ICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVn
aW9uc10gUmVtb3ZlIHRoZSBzYW5pdGl6ZSBtZWNoYW5pc20gZnJvbSBMaW5lRnJhZ21lbnRhdGlv
bkRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA2MTBmMGM4MzJlMjQ4ZDEzM2Y1Y2JmMDIyNzg2ZTljNzVjMGM0
ZDk2Li5kMzhiY2E5Njk1MTZhYjI1MTljOGI5YWRkNDI1YmYwM2RhOTQwMWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMDcgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJs
ZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhl
ZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgQWRkIHN5bWJvbC4KKworICAgICAgICAqIHdp
bi9XZWJLaXQyLmRlZi5pbjoKKwogMjAxMi0xMi0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEz
NjkwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNWE0NWQ1ZGUwNWUyZDYxMTdlNjgzMTExZDMy
MjQ0ODNlNTU3NGFhZS4uZDRmODY5NzIxM2Q3MzIxYTEyZjNhZjYwYWNhMzBjYzkxODA2MDAyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc2MSw2ICs3NjEsNyBAQCBfX1pON1dlYkNvcmU0UGFn
ZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMjVzdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9r
ZW5pemVyQ2h1bmtTaXplRWkKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5p
emVyVGltZURlbGF5RWQKK19fWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29uc0FzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTMyc2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxs
c0VuYWJsZWRFYgogX19aTjdXZWJDb3JlNFBhZ2UzNXJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzZzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnNFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOWQ1MzU5NzYxMmEyYTA5NTEwZWZi
YmY2NTVlNWFhZDhkYWI1ZTM5NS4uMzZkNjQ3YWVjNDQ4MTQ2ZmNhNzZhNjkwYTBiMzQxZDU5ZTVh
Yzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNTUsNiArMjU1LDE3IEBAIFN0cmluZyBQYWdl
OjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAor
U3RyaW5nIFBhZ2U6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkKK3sKKyAgICBp
ZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAg
IGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKKworICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQor
ICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPm1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zQXNUZXh0KCk7CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIHN0cnVjdCBWaWV3
TW9kZUluZm8gewogICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgUGFnZTo6Vmlld01vZGUgdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggNDQzYWIyNjBiMTk0YjM3NWViZWVlZmNkYTc0YzBiNjRmYTM2
YjAwYy4uNmMzOTU1MGZhZTA1YWJjYzQ0NjMyNDU2ODVjMDBmMjVkZTgwZDQ3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcigpOwogCiAgICAgICAgIFN0
cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKKyAgICAgICAgU3RyaW5nIG1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCk7CiAKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdz
KCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogICAgICAgICBQcm9ncmVzc1Ry
YWNrZXIqIHByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCmluZGV4IGNkOTQzMmMyYTgyZDhlMDE4MDA3NDdjNGIyZmQwODc0ZTA5ZWIyNjIuLjZi
N2M5OTA0NWE5ZGJjYTU2OTA0M2YzNDY4Mjg0NzY1ZWRlNDdiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTM0Myw4ICszNDMsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xv
d1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFtZVZpZQogICAgICAgICBSZW5kZXJP
YmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgPSAqaXQ7CiAgICAgICAgIGlmICghdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aWV3cG9ydENvbnN0cmFpbmVkQm94TW9kZWxP
YmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qp
OwotICAgICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdC0+bGF5ZXIo
KS0+YmFja2luZygpKQorICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOworICAgICAgICBp
ZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiAhbGF5ZXItPmlzRml4ZWRQb3NpdGlvbk5vdFRv
QmVQYWludGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzk4LDQgKzM5OCwyOSBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCit7CisgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworCisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdD
b29yZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICIpOworICAgIGlmIChyZWFz
b25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBm
aXhlZCBsYXllcnMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
SGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJJcyBpbWFnZSBkb2N1bWVudCwgIik7CisKKyAgICBpZiAoc3RyaW5nQnVpbGRlci5s
ZW5ndGgoKSkKKyAgICAgICAgc3RyaW5nQnVpbGRlci5yZXNpemUoc3RyaW5nQnVpbGRlci5sZW5n
dGgoKSAtIDIpOworICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dChtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKaW5kZXggYzJmMWZhODY1MGVhYjQwMjVkZTNkYmQ5MjZkMGM2Zjk4NTIzNTFm
Mi4uZjI1MTBjY2E1MTI3YmUwZmE4MmM4OTVjZWY3ODlhOGI0ZThlNDgwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBA
IC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NM
YXllciosIGJvb2wpIHsgfQogCisgICAgc3RhdGljIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk7CisgICAgU3RyaW5nIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDVkMzdiZTJmNTMzYWU2YWZlMzU5NDczOWI2ZTg2ZDdjNTU4ZDMzMjMu
LjFhZDVmYTI4YzY3MmRlMWIwNDhjODM5ODVkZTM2M2FhNjg4MzY0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcApAQCAtMjI3LDE4ICsyMjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNv
bgogCiAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCkgewogICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgIHRzIDw8
ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICI7Ci0gICAgICAgIGlmIChtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQotICAgICAgICAgICAgdHMgPDwgIkZvcmNlZCBv
biBtYWluIHRocmVhZCwgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWlu
dE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAi
OwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgdmll
d3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJz
LCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQot
ICAgICAgICAgICAgdHMgPDwgIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIjsKLSAgICAg
ICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCi0gICAgICAgICAgICB0cyA8PCAi
SXMgaW1hZ2UgZG9jdW1lbnQiOwotICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgdHMgPDwg
IihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIiA8PCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQobV9zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSA8PCAiKVxuIjsKICAgICB9CiAKICAgICBpZiAo
bV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAhPSBJbnRQb2ludCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZmIyZDRjNzQ5ZGIxNzhiMWVkODVjZTVi
MGY5YzA3YzRiNzhjYWU3Li45ZGRhMGNmYWM5MmJiZGRmN2MwZmQ4ZGFmODU2YTg4YTM1OGIzNjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMxMjMsNiAr
MzEyMyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIo
UmVuZGVyTGF5ZXIqIGxheWVyKQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICBpZiAoaXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1
cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0
aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9u
J3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMg
Y2FzZS4KQEAgLTQ3MzYsNiArNDczOSwxMiBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllcjo6
bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tpbmcgPyBt
X2JhY2tpbmctPmxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgOiAwOwogfQorCitib29sIFJlbmRlckxh
eWVyOjppc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFpbnRlZCgpIGNvbnN0Cit7CisgICAgLy8gQSBm
aXhlZCBwb3NpdGlvbiBsYXllciB0aGF0IGNhbiBiZSBjb21wb3NpdGVkIHNob3VsZCBiZSBjb21w
b3NpdGVkLCBvciBzaG91bGQgbm90IGJlIHBhaW50ZWQgKGUuZy4gb3V0LW9mLXZpZXcpLgorICAg
IHJldHVybiAhaXNDb21wb3NpdGVkKCkgJiYgY29tcG9zaXRvcigpLT5pc0ZpeGVkUG9zaXRpb25D
YW5CZUNvbXBvc2l0ZWQodGhpcyk7Cit9CiAjZW5kaWYKIAogYm9vbCBSZW5kZXJMYXllcjo6cGFp
bnRzV2l0aFRyYW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDBjMGNkNzk4MjFiYWU5MmM4OTU5
OTRiMGM3N2QzMzAxMWJlYWFmNjkuLmEyYWY1NmFjZWRlYmQ5NDZiOGU5MzhmNmQ5ZGMzMzI2ZmFj
MGVmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02NTUsNiAr
NjU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0
aWNhbFNjcm9sbGJhcigpIGNvbnN0OwogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJG
b3JTY3JvbGxDb3JuZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICBib29sIGlzRml4ZWRQb3NpdGlvbk5vdFRv
QmVQYWludGVkKCkgY29uc3Q7CiAjZWxzZQogICAgIGJvb2wgaXNDb21wb3NpdGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhc0NvbXBvc2l0ZWRNYXNrKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNTYxZWIyOGE2ZDljOGIxOGZiZTkxNDA2Y2NkM2QzOGYy
NGNhYTc3MC4uZmI3MmNjNGIyNDc2OWM5NzlkYTU5Y2ExMGY1MGNhZTRhNTg3N2Q1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
QEAgLTE5NDgsMTEgKzE5NDgsMTIgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmUKICNlbmRpZgog
fQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBv
c2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikg
Y29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc0ZpeGVkUG9zaXRpb25DYW5CZUNv
bXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAogewogICAgIC8vIHBvc2l0
aW9uOmZpeGVkIGVsZW1lbnRzIHRoYXQgY3JlYXRlIHRoZWlyIG93biBzdGFja2luZyBjb250ZXh0
IChlLmcuIGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCwKICAgICAvLyBvcGFjaXR5LCB0cmFuc2Zv
cm0pIGNhbiBnZXQgdGhlaXIgb3duIGNvbXBvc2l0ZWQgbGF5ZXIuIEEgc3RhY2tpbmcgY29udGV4
dCBpcyByZXF1aXJlZCBvdGhlcndpc2UKICAgICAvLyB6LWluZGV4IGFuZCBjbGlwcGluZyB3aWxs
IGJlIGJyb2tlbi4KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVy
KCk7CiAgICAgaWYgKCEocmVuZGVyZXItPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHJlbmRl
cmVyLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbGF5ZXItPmlzU3Rh
Y2tpbmdDb250ZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5NzIsNiArMTk3
MywxNCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgIGlmIChjb250YWluZXIgIT0gbV9y
ZW5kZXJWaWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3Np
dGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGNv
bnN0Cit7CisgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb25DYW5CZUNvbXBvc2l0ZWQobGF5ZXIpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBGaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0
aGF0IGFyZSBpbnZpc2libGUgaW4gdGhlIGN1cnJlbnQgdmlldyBkb24ndCBnZXQgdGhlaXIgb3du
IGxheWVyLgogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJh
bWVWaWV3KCkpIHsKICAgICAgICAgSW50UmVjdCB2aWV3Qm91bmRzID0gZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaAppbmRleCA1MTkzNDExYTJkNzEwZTc5ZTIzOGY1MTBiZjc0YWUwZTZh
MWZkY2ExLi5lYjU4MTg3ZWZmZGFjNGU3ZWJlYjA3NjUxY2FhMzUzMTY0ZjBjNWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0y
MzEsNiArMjMxLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3Rz
KCk7CiAgICAgdm9pZCBzZXRUcmFja3NSZXBhaW50cyhib29sKTsKIAorICAgIC8vIFdoZXRoZXIg
dGhlIGxheWVyIGlzIGZpeGVkIHBvc2l0aW9uIGFuZCBjb3VsZCBldmVyIGJlIGNvbXBvc2l0ZWQu
CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb25DYW5CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5
ZXIqKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBPdmVybGFwTWFwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNzY2YTBlMmQ5ZmY3NDE0MzAzMDc2NjA1N2Rj
OWI4M2RkYzY0YmRiYi4uZjdlMGUyMDI2ZDljYTMxY2Q2ODI0NTgwODAyYjg0ZTdhYmE5OTI0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ1Nyw2ICsxNDU3LDIwIEBA
IFN0cmluZyBJbnRlcm5hbHM6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChEb2N1bWVudCogZG9j
dW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgcmV0dXJuIHBhZ2UtPnNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dCgpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjptYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29ucyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorewor
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisg
ICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gcGFnZS0+bWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnNBc1RleHQoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OmdhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKICAgICBpZiAoIWRvY3VtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApp
bmRleCA1YmMyNjg1NjgxYzgwZDFiZjlhNjA2Y2NkMmJlNzZlNGVhYTc1ZDUwLi5iMTIxZDlmN2Fl
MWQ5ZmZjZDYzYzQxZDQ0NzEwYzZlNzEyNjNhMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTIwOCw2ICsyMDgsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlcGFpbnRSZWN0
c0FzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBTdHJpbmcgc2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
CisgICAgU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50KiwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OworCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgdm9pZCBhbGxvd1Jv
dW5kaW5nSGFja3MoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRl
eCBjZGQzZTM4NGY4MGIwOWMwZmU5ZDBkNzQ4OWRlMjJiODYzZTBmNDQ5Li4xNjNlNjc2NTdlNDg4
ZDYxOGNkNGQ3ZDUyOGMzYTc3MWE4NGU5OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCkBAIC0xNjUsNiArMTY1LDcgQEAKICAgICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0
KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGZsYWdz
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICBET01TdHJpbmcgc2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Cisg
ICAgRE9NU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGluIERvY3VtZW50IGRvY3Vt
ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICBET01TdHJpbmcgcmVwYWludFJlY3Rz
QXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbiBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZi5pbgppbmRleCA0ZTY3MTc4ZTgwOTdiNzQ4NjY3ZGMzNzJmZDQy
ODg3YzkxYTI2NjgyLi5hYWZlNGI2ZmJhNjYwNzk3NjQ4YzgxMGUxNjU3Y2ZjMmY3ZWI1ZmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluCkBAIC0yMjgsNiArMjI4LDcgQEAgRVhQT1JUUwog
ICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05B
QlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVA
SlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJA
VkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNV
c2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCisgICAg
ICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9B
VlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJv
bGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAk
MEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCiAgICAg
ICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBR
QUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDViNzc3NzY3Y2E2MjU3OGVlYWFiZWYy
NjFlOGNlZTY2YTVjNTY1YzkuLjExMGFkYzNmNzRjOWVmN2MzNDIyM2Y5NjgwZWMxYjc2YjA3NjJl
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMzEsNiArMzEsNyBAQCBfWk43V2ViQ29y
ZTRQYWdlMTNzZXRQYWdpbmF0aW9uRVJLTlNfMTBQYWdpbmF0aW9uRTsKIF9aTjdXZWJDb3JlNFBh
Z2UxOHNldFBhZ2VTY2FsZUZhY3RvckVmUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmU0UGFn
ZTIwc2V0RGV2aWNlU2NhbGVGYWN0b3JFZjsKIF9aTjdXZWJDb3JlNFBhZ2UyNHNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dEV2OworX1pON1dlYkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNBc1RleHRFdjsKIF9aTjdXZWJDb3JlNFBhZ2UxNnNldENhblN0YXJ0TWVkaWFFYjsKIF9a
TjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TlNfMTBDbGllbnRSZWN0RTsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNf
MTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dSb290RTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MGYwNGU2NDc5
NmY0NmQ1NWI5M2RmMDYwOGZlNTk0YTk4YjEyOTQ3Li41YmMyYjQwNjVlOTMxZDMwNzk1MDg5NTRm
OWQ1ZDJkMTUzNGMwMDBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMDcgIFhpYW56
aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhj
bHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVh
dGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLmh0bWw6IEVuc3Vy
ZSBzbG93LXNjcm9sbGluZyBpcyBub3QgdHJpZ2dlcmVkLgorICAgICAgICAqIGNvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24t
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dDogVXBkYXRlZCBhY2NvcmRpbmcg
dG8gdGhlIGNoYW5nZSBvZiBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucy4KKwogMjAxMi0xMi0w
NiAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgogCiAgICAgICAgIFVuaWZ5IFNWRydz
IGFuaW1hdGlvbiBhbmQgdGFyZ2V0IHRyYWNraW5nIHN5c3RlbXMuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Yt
dmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MjdiZmI5NjNlZDlmYTVhMGYwZWJkZmFjMDAwNWE5
OGU1ZjRjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK01haW4gdGhyZWFkIHNjcm9sbGluZyByZWFzb25zIHNo
b3VsZCBiZSBibGFuazoKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1s
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24t
b3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNzg0NjRlN2M1ODBm
MGZiZThiOWYyOTRjYmViMzRhMTU5MDc4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1z
Y3JvbGwtcmVhc29uLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgIC5maXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVkOwor
ICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKKyAgICB6LWluZGV4OiAtMTsKKyAg
fQorPC9zdHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNv
bXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKworICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50
ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICB9LCBmYWxz
ZSk7CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgc3R5bGU9ImhlaWdo
dDogMTAwMHB4Ij4KKyAgTWFpbiB0aHJlYWQgc2Nyb2xsaW5nIHJlYXNvbnMgc2hvdWxkIGJlIGJs
YW5rOgorICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+Cis8L2Rp
dj4KKworPCEtLSBvdXQgb2YgdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50IHNob3VsZCBub3Qg
dHJpZ2dlciBtYWluIHRocmVhZCBzY3JvbGxpbmcuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRy
ZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4MGNmMWNiYWE4ZGQxY2Vi
MWY5ZGIxMjI1YzhmMzExMTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2EwMjBlYzRmMWJiYjE4YmQy
MGUyYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9s
bGluZy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xsaW5nIG5vZGUKICAgKHZp
ZXdwb3J0IHJlY3QgMCAwIDgwMCA2MDApCiAgIChjb250ZW50cyBzaXplIDgwMCA2MDApCi0gIChT
Y3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3Rz
LCApCisgIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWlu
dCBvYmplY3RzKQogKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
NTc1NmZiZjhjNzIxMDc3NDZkOWIyMDM1ZjBhY2RjZTJkMjM4MGRlZi4uMjY3YjA4MjEwMTU4YTE1
ZDNkOWQ1ZjYwNjZhMjIyZTljMTQ2MTc0OCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTA3ICBYaWFuemh1IFdhbmcgIDx3YW5n
eGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhh
c1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZp
ZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzeW1ib2wuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTEyLTA2ICBMYXN6bG8gR29tYm9zICA8bC5nb21i
b3NAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlIEVOQUJMRV9HTElCX1NVUFBP
UlQgQ01ha2UgdmFyaWFibGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178264</attachid>
            <date>2012-12-07 13:32:54 -0800</date>
            <delta_ts>2012-12-10 21:50:15 -0800</delta_ts>
            <desc>Fix mac build break</desc>
            <filename>bug-102543-20121207213018.patch</filename>
            <type>text/plain</type>
            <size>24271</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjllYTIwY2I3NzAyMzlj
MTU3ZmFmZmQ1M2NjMzZjNmE1MmVmOWVkOC4uNmFhMDFmMThhYjk5Y2FmYmI2ZWU5YzYxYTQ5NGUx
ZDA2Nzk1M2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTA3ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIGEgZml4ZWQgcG9zaXRp
b24gbGF5ZXIgc2hvdWxkIGJlIHBhaW50ZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAg
ICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhl
ZE9iamVjdHMoKSwgZXhjbHVkZSBpbnZpc2libGUgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMsIHNv
IHRoYXQgdGhleSB3b24ndCBjYXVzZSBzbG93IHNjcm9sbGluZy4KKyAgICAgICAgMikgaW4gUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXIoKTogdG8gYXZvaWQgcHJlLXBhaW50aW5nIHRoZSBvdXQtb2Yt
dmlldyBmaXhlZC1wb3NpdGlvbmVkIGxheWVycy4KKworICAgICAgICBBZGRlZCB3aW5kb3cuaW50
ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgZm9yIHRlc3RpbmcuCisK
KyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24t
b3V0LW9mLXZpZXctc2NhbGVkLmh0bWwKKyAgICAgICAgICAgICAgY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXcuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0
cyk6IEV4Y2x1ZGUgaW52aXNpYmxlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KTogRXh0cmFjdGVkIGZyb20gU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1w
UHJvcGVydGllcyBmb3IgbGF5b3V0IHRlc3RzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6IE1vdmVkIGNvZGUgZm9yIG1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXIpOiBEb24ndCBwYWludCBvdXQtb2YtdmlldyBmaXhlZCBlbGVtZW50LgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aXNGaXhlZFBvc2l0
aW9uTm90VG9CZVBhaW50ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgor
ICAgICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpp
c0ZpeGVkUG9zaXRpb25DYW5CZUNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdG
b3JQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
OgorICAgICAgICAoUmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3Jv
bGxpbmdSZWFzb25zKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGRlZCBzZXR0aW5n
cy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyBmb3IgbGF5b3V0IHRlc3RzLgorCiAyMDEyLTEy
LTA2ICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVn
aW9uc10gUmVtb3ZlIHRoZSBzYW5pdGl6ZSBtZWNoYW5pc20gZnJvbSBMaW5lRnJhZ21lbnRhdGlv
bkRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA2MTBmMGM4MzJlMjQ4ZDEzM2Y1Y2JmMDIyNzg2ZTljNzVjMGM0
ZDk2Li5kMzhiY2E5Njk1MTZhYjI1MTljOGI5YWRkNDI1YmYwM2RhOTQwMWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMDcgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJs
ZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhjbHVkZSBvdXQtb2YtdmlldyBmaXhl
ZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgQWRkIHN5bWJvbC4KKworICAgICAgICAqIHdp
bi9XZWJLaXQyLmRlZi5pbjoKKwogMjAxMi0xMi0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEz
NjkwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNWE0NWQ1ZGUwNWUyZDYxMTdlNjgzMTExZDMy
MjQ0ODNlNTU3NGFhZS4uZDRmODY5NzIxM2Q3MzIxYTEyZjNhZjYwYWNhMzBjYzkxODA2MDAyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc2MSw2ICs3NjEsNyBAQCBfX1pON1dlYkNvcmU0UGFn
ZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMjVzdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9r
ZW5pemVyQ2h1bmtTaXplRWkKIF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5p
emVyVGltZURlbGF5RWQKK19fWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29uc0FzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTMyc2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxs
c0VuYWJsZWRFYgogX19aTjdXZWJDb3JlNFBhZ2UzNXJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzZzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnNFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOWQ1MzU5NzYxMmEyYTA5NTEwZWZi
YmY2NTVlNWFhZDhkYWI1ZTM5NS4uMzZkNjQ3YWVjNDQ4MTQ2ZmNhNzZhNjkwYTBiMzQxZDU5ZTVh
Yzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNTUsNiArMjU1LDE3IEBAIFN0cmluZyBQYWdl
OjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAor
U3RyaW5nIFBhZ2U6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkKK3sKKyAgICBp
ZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAg
IGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKKworICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQor
ICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPm1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zQXNUZXh0KCk7CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIHN0cnVjdCBWaWV3
TW9kZUluZm8gewogICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgUGFnZTo6Vmlld01vZGUgdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggNDQzYWIyNjBiMTk0YjM3NWViZWVlZmNkYTc0YzBiNjRmYTM2
YjAwYy4uNmMzOTU1MGZhZTA1YWJjYzQ0NjMyNDU2ODVjMDBmMjVkZTgwZDQ3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcigpOwogCiAgICAgICAgIFN0
cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKKyAgICAgICAgU3RyaW5nIG1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCk7CiAKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdz
KCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogICAgICAgICBQcm9ncmVzc1Ry
YWNrZXIqIHByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCmluZGV4IGNkOTQzMmMyYTgyZDhlMDE4MDA3NDdjNGIyZmQwODc0ZTA5ZWIyNjIuLjZi
N2M5OTA0NWE5ZGJjYTU2OTA0M2YzNDY4Mjg0NzY1ZWRlNDdiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTM0Myw4ICszNDMsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xv
d1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFtZVZpZQogICAgICAgICBSZW5kZXJP
YmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgPSAqaXQ7CiAgICAgICAgIGlmICghdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aWV3cG9ydENvbnN0cmFpbmVkQm94TW9kZWxP
YmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qp
OwotICAgICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdC0+bGF5ZXIo
KS0+YmFja2luZygpKQorICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOworICAgICAgICBp
ZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiAhbGF5ZXItPmlzRml4ZWRQb3NpdGlvbk5vdFRv
QmVQYWludGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzk4LDQgKzM5OCwyOSBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0KE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCit7CisgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworCisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdD
b29yZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICIpOworICAgIGlmIChyZWFz
b25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBm
aXhlZCBsYXllcnMsICIpOworICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
SGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJJcyBpbWFnZSBkb2N1bWVudCwgIik7CisKKyAgICBpZiAoc3RyaW5nQnVpbGRlci5s
ZW5ndGgoKSkKKyAgICAgICAgc3RyaW5nQnVpbGRlci5yZXNpemUoc3RyaW5nQnVpbGRlci5sZW5n
dGgoKSAtIDIpOworICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dChtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKaW5kZXggYzJmMWZhODY1MGVhYjQwMjVkZTNkYmQ5MjZkMGM2Zjk4NTIzNTFm
Mi4uZjI1MTBjY2E1MTI3YmUwZmE4MmM4OTVjZWY3ODlhOGI0ZThlNDgwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBA
IC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NM
YXllciosIGJvb2wpIHsgfQogCisgICAgc3RhdGljIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk7CisgICAgU3RyaW5nIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDVkMzdiZTJmNTMzYWU2YWZlMzU5NDczOWI2ZTg2ZDdjNTU4ZDMzMjMu
LjFhZDVmYTI4YzY3MmRlMWIwNDhjODM5ODVkZTM2M2FhNjg4MzY0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcApAQCAtMjI3LDE4ICsyMjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNv
bgogCiAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCkgewogICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgIHRzIDw8
ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICI7Ci0gICAgICAgIGlmIChtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQotICAgICAgICAgICAgdHMgPDwgIkZvcmNlZCBv
biBtYWluIHRocmVhZCwgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWlu
dE9iamVjdHMpCi0gICAgICAgICAgICB0cyA8PCAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAi
OwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgdmll
d3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJz
LCAiOwotICAgICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQot
ICAgICAgICAgICAgdHMgPDwgIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIjsKLSAgICAg
ICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCi0gICAgICAgICAgICB0cyA8PCAi
SXMgaW1hZ2UgZG9jdW1lbnQiOwotICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgdHMgPDwg
IihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogIiA8PCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQobV9zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSA8PCAiKVxuIjsKICAgICB9CiAKICAgICBpZiAo
bV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiAhPSBJbnRQb2ludCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZmIyZDRjNzQ5ZGIxNzhiMWVkODVjZTVi
MGY5YzA3YzRiNzhjYWU3Li45ZGRhMGNmYWM5MmJiZGRmN2MwZmQ4ZGFmODU2YTg4YTM1OGIzNjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMxMjMsNiAr
MzEyMyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIo
UmVuZGVyTGF5ZXIqIGxheWVyKQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICBpZiAoaXNGaXhlZFBvc2l0aW9uTm90VG9CZVBhaW50ZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1
cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0
aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9u
J3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMg
Y2FzZS4KQEAgLTQ3MzYsNiArNDczOSwxMiBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllcjo6
bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tpbmcgPyBt
X2JhY2tpbmctPmxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgOiAwOwogfQorCitib29sIFJlbmRlckxh
eWVyOjppc0ZpeGVkUG9zaXRpb25Ob3RUb0JlUGFpbnRlZCgpIGNvbnN0Cit7CisgICAgLy8gQSBm
aXhlZCBwb3NpdGlvbiBsYXllciB0aGF0IGNhbiBiZSBjb21wb3NpdGVkIHNob3VsZCBiZSBjb21w
b3NpdGVkLCBvciBzaG91bGQgbm90IGJlIHBhaW50ZWQgKGUuZy4gb3V0LW9mLXZpZXcpLgorICAg
IHJldHVybiAhaXNDb21wb3NpdGVkKCkgJiYgY29tcG9zaXRvcigpLT5pc0ZpeGVkUG9zaXRpb25D
YW5CZUNvbXBvc2l0ZWQodGhpcyk7Cit9CiAjZW5kaWYKIAogYm9vbCBSZW5kZXJMYXllcjo6cGFp
bnRzV2l0aFRyYW5zZm9ybShQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDBjMGNkNzk4MjFiYWU5MmM4OTU5
OTRiMGM3N2QzMzAxMWJlYWFmNjkuLmEyYWY1NmFjZWRlYmQ5NDZiOGU5MzhmNmQ5ZGMzMzI2ZmFj
MGVmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02NTUsNiAr
NjU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0
aWNhbFNjcm9sbGJhcigpIGNvbnN0OwogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJG
b3JTY3JvbGxDb3JuZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICBib29sIGlzRml4ZWRQb3NpdGlvbk5vdFRv
QmVQYWludGVkKCkgY29uc3Q7CiAjZWxzZQogICAgIGJvb2wgaXNDb21wb3NpdGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhc0NvbXBvc2l0ZWRNYXNrKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNTYxZWIyOGE2ZDljOGIxOGZiZTkxNDA2Y2NkM2QzOGYy
NGNhYTc3MC4uYzczYzg1ODJjOTE2NWJiYzhkNzkwMzczZmMzODRiYjY3ZWU4MGQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
QEAgLTE1NzAsNyArMTU3MCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjCiAgICAgICAgIHx8
IGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhsYXllcikKICAgICAgICAgfHwgcmVxdWlyZXND
b21wb3NpdGluZ0ZvckFuaW1hdGlvbihyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21w
b3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIpCisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbihsYXllcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0Zv
ck92ZXJmbG93U2Nyb2xsaW5nKGxheWVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yQmxlbmRpbmcocmVuZGVyZXIpOwogfQpAQCAtMTYwMSw3ICsxNjAxLDcgQEAgYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGNvbnN0IFJlbmRlckxh
eWVyKiBsYXllciwgY28KICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlv
bihyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMocmVu
ZGVyZXIpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhyZW5kZXJl
cikKLSAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKHJlbmRlcmVyLCBs
YXllcikKKyAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKGxheWVyKQog
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcobGF5ZXIp
CiAgICAgICAgIHx8IHJlbmRlcmVyLT5pc1RyYW5zcGFyZW50KCkKICAgICAgICAgfHwgcmVuZGVy
ZXItPmhhc01hc2soKQpAQCAtMTY1Nyw3ICsxNjU3LDcgQEAgY29uc3QgY2hhciogUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZWFzb25Gb3JDb21wb3NpdGluZyhjb25zdCBSZW5kZXJMYXllciogbGF5
ZXIKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpKQogICAg
ICAgICByZXR1cm4gImZpbHRlcnMiOwogCi0gICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQ
b3NpdGlvbihyZW5kZXJlciwgbGF5ZXIpKQorICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
UG9zaXRpb24obGF5ZXIpKQogICAgICAgICByZXR1cm4gInBvc2l0aW9uOiBmaXhlZCI7CiAKICAg
ICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGxheWVyKSkKQEAg
LTE5NDgsMTEgKzE5NDgsMTIgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmUKICNlbmRpZgogfQog
Ci1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0
aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29u
c3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc0ZpeGVkUG9zaXRpb25DYW5CZUNvbXBv
c2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAogewogICAgIC8vIHBvc2l0aW9u
OmZpeGVkIGVsZW1lbnRzIHRoYXQgY3JlYXRlIHRoZWlyIG93biBzdGFja2luZyBjb250ZXh0IChl
LmcuIGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCwKICAgICAvLyBvcGFjaXR5LCB0cmFuc2Zvcm0p
IGNhbiBnZXQgdGhlaXIgb3duIGNvbXBvc2l0ZWQgbGF5ZXIuIEEgc3RhY2tpbmcgY29udGV4dCBp
cyByZXF1aXJlZCBvdGhlcndpc2UKICAgICAvLyB6LWluZGV4IGFuZCBjbGlwcGluZyB3aWxsIGJl
IGJyb2tlbi4KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7
CiAgICAgaWYgKCEocmVuZGVyZXItPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHJlbmRlcmVy
LT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbGF5ZXItPmlzU3RhY2tp
bmdDb250ZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5NzIsNiArMTk3Mywx
NCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBv
c2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgIGlmIChjb250YWluZXIgIT0gbV9yZW5k
ZXJWaWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlv
bihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0Cit7CisgICAgaWYgKCFpc0ZpeGVkUG9z
aXRpb25DYW5CZUNvbXBvc2l0ZWQobGF5ZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICAvLyBGaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBpbnZpc2libGUgaW4gdGhlIGN1
cnJlbnQgdmlldyBkb24ndCBnZXQgdGhlaXIgb3duIGxheWVyLgogICAgIGlmIChGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50UmVj
dCB2aWV3Qm91bmRzID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA1MTkz
NDExYTJkNzEwZTc5ZTIzOGY1MTBiZjc0YWUwZTZhMWZkY2ExLi5hYWNiMjhkY2NkMWZiNDdiMWY1
ZTBiYTlmYzRiN2EzYjJkNTZmNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0yMzEsNiArMjMxLDkgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCk7CiAgICAgdm9pZCBzZXRUcmFja3NSZXBh
aW50cyhib29sKTsKIAorICAgIC8vIFdoZXRoZXIgdGhlIGxheWVyIGlzIGZpeGVkIHBvc2l0aW9u
IGFuZCBjb3VsZCBldmVyIGJlIGNvbXBvc2l0ZWQuCisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb25D
YW5CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBjbGFzcyBPdmVybGFwTWFwOwogCkBAIC0zMTIsNyArMzE1LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKFJlbmRlck9iamVjdCopIGNvbnN0Owog
ICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckJsZW5kaW5nKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVG
cmFtZSgpIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJl
c0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKICAgICBi
b29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhjb25zdCBSZW5kZXJM
YXllciopIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVh
c29uKFJlbmRlck9iamVjdCosIGJvb2wgaGFzQ29tcG9zaXRlZERlc2NlbmRhbnRzLCBib29sIGhh
czNEVHJhbnNmb3JtZWREZXNjZW5kYW50cywgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRp
bmdSZWFzb24mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDc2NmEwZTJkOWZmNzQxNDMwMzA3NjYwNTdkYzliODNkZGM2NGJkYmIuLmY3ZTBlMjAyNmQ5Y2Ez
MWNkNjgyNDU4MDgwMmI4NGU3YWJhOTkyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTE0NTcsNiArMTQ1NywyMCBAQCBTdHJpbmcgSW50ZXJuYWxzOjpzY3JvbGxpbmdT
dGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYwogICAg
IHJldHVybiBwYWdlLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKIH0KIAorU3RyaW5nIElu
dGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVu
dC0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0
dXJuIHBhZ2UtPm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCk7Cit9CisKIHZvaWQg
SW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKERvY3VtZW50KiBkb2N1
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNWJjMjY4NTY4MWM4MGQxYmY5YTYwNmNj
ZDJiZTc2ZTRlYWE3NWQ1MC4uYjEyMWQ5ZjdhZTFkOWZmY2Q2M2M0MWQ0NDcxMGM2ZTcxMjYzYTBh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMDgsNiArMjA4LDggQEAgcHVi
bGljOgogICAgIFN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChEb2N1bWVu
dCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAorICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29ucyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKwogICAgIHZvaWQg
Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKIAogICAgIHZvaWQgYWxsb3dSb3VuZGluZ0hhY2tzKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggY2RkM2UzODRmODBiMDljMGZlOWQwZDc0ODlk
ZTIyYjg2M2UwZjQ0OS4uMTYzZTY3NjU3ZTQ4OGQ2MThjZDRkN2Q1MjhjM2E3NzFhODRlOTlhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTY1LDYgKzE2NSw3IEBACiAg
ICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gW09w
dGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAg
ICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVu
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIERPTVN0cmluZyBtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
CiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4KaW5kZXgg
NGU2NzE3OGU4MDk3Yjc0ODY2N2RjMzcyZmQ0Mjg4N2M5MWEyNjY4Mi4uYWFmZTRiNmZiYTY2MDc5
NzY0OGM4MTBlMTY1N2NmYzJmN2ViNWZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgpA
QCAtMjI4LDYgKzIyOCw3IEBAIEVYUE9SVFMKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJl
c291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pz
QXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01H
bG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZA
QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnRAV2ViQ29yZUBAUUJFX05YWgorICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/bWFy
a2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JA
UEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlw
ZXNARG9jdW1lbnRNYXJrZXJAMkBAWgogICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpp
bmRleCA1Yjc3Nzc2N2NhNjI1NzhlZWFhYmVmMjYxZThjZWU2NmE1YzU2NWM5Li4xMTBhZGMzZjc0
YzllZjdjMzQyMjNmOTY4MGVjMWI3NmIwNzYyZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
QEAgLTMxLDYgKzMxLDcgQEAgX1pON1dlYkNvcmU0UGFnZTEzc2V0UGFnaW5hdGlvbkVSS05TXzEw
UGFnaW5hdGlvbkU7CiBfWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNf
OEludFBvaW50RTsKIF9aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWY7CiBf
Wk43V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdjsKK19aTjdXZWJDb3Jl
NFBhZ2UzMm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0RXY7CiBfWk43V2ViQ29yZTRQ
YWdlMTZzZXRDYW5TdGFydE1lZGlhRWI7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3Rh
dGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50UmVjdEU7CiBfWk43V2ViQ29y
ZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwU2hh
ZG93Um9vdEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODBmMDRlNjQ3OTZmNDZkNTViOTNkZjA2MDhmZTU5NGE5OGIxMjk0
Ny4uNWJjMmI0MDY1ZTkzMWQzMDc5NTA4OTU0ZjlkNWQyZDE1MzRjMDAwYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEyLTEyLTA3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVw
YWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRp
b24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZp
ZXctc2Nyb2xsLXJlYXNvbi5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRyaWdn
ZXJlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlv
bi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBl
Y3RlZC50eHQ6IFVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2YgbWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnMuCisKIDIwMTItMTItMDYgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBVbmlmeSBTVkcncyBhbmltYXRpb24gYW5kIHRhcmdldCB0cmFja2lu
ZyBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlv
bi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTI3
YmZiOTYzZWQ5ZmE1YTBmMGViZGZhYzAwMDVhOThlNWY0Y2RmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0
LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitNYWlu
IHRocmVhZCBzY3JvbGxpbmcgcmVhc29ucyBzaG91bGQgYmUgYmxhbms6CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91
dC1vZi12aWV3LXNjcm9sbC1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40Yjc4NDY0ZTdjNTgwZjBmYmU4YjlmMjk0Y2JlYjM0YTE1OTA3OGM0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCkBAIC0wLDAgKzEs
MzcgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAuZml4
ZWQgeworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6
IDEwcHg7CisgICAgei1pbmRleDogLTE7CisgIH0KKzwvc3R5bGU+CisKKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1
ZSk7CisKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkg
eworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zIikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVh
c29ucyhkb2N1bWVudCk7CisgICAgfSwgZmFsc2UpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHk+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+CisgIE1haW4gdGhyZWFkIHNj
cm9sbGluZyByZWFzb25zIHNob3VsZCBiZSBibGFuazoKKyAgPHByZSBpZD0ibWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnMiPjwvcHJlPgorPC9kaXY+CisKKzwhLS0gb3V0IG9mIHZpZXcgZml4ZWQg
cG9zaXRpb24gZWxlbWVudCBzaG91bGQgbm90IHRyaWdnZXIgbWFpbiB0aHJlYWQgc2Nyb2xsaW5n
LiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVkIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10
cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4
dAppbmRleCBiZTQwODBjZjFjYmFhOGRkMWNlYjFmOWRiMTIyNWM4ZjMxMTE1YjgzLi4zMmVmMGNl
NWNjNzU5ZWZiZjdhMDIwZWM0ZjFiYmIxOGJkMjBlMmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGlu
Zy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEs
NiBAQAogKFNjcm9sbGluZyBub2RlCiAgICh2aWV3cG9ydCByZWN0IDAgMCA4MDAgNjAwKQogICAo
Y29udGVudHMgc2l6ZSA4MDAgNjAwKQotICAoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1
c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgKQorICAoU2Nyb2xsaW5nIG9uIG1haW4gdGhy
ZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cykKICkKIApkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDU3NTZmYmY4YzcyMTA3NzQ2ZDliMjAzNWYwYWNk
Y2UyZDIzODBkZWYuLjI2N2IwODIxMDE1OGExNWQzZDlkNWY2MDY2YTIyMmU5YzE0NjE3NDggMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0xMi0wNyAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVj
dCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3ltYm9s
LgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0x
Mi0wNiAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdIFJlbW92ZSBFTkFCTEVfR0xJQl9TVVBQT1JUIENNYWtlIHZhcmlhYmxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178710</attachid>
            <date>2012-12-10 21:50:20 -0800</date>
            <delta_ts>2012-12-11 10:32:25 -0800</delta_ts>
            <desc>Let RLC manage reasons of fixed pos layer not composited</desc>
            <filename>bug-102543-20121211054742.patch</filename>
            <type>text/plain</type>
            <size>27184</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiMDgxOTExNzQ3NDU5
NDBhYjk3NTVjOTM0OTYzNTJiMWRlMjJjMi4uNjBmNzcyZjJiMDk2MjJlMjJjYjk2NDI2NmI5NTI4
YTM2NmZjYWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEyLTEwICBYaW5h
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIENoZWNr
IHJlYXNvbiB0aGF0IGEgZml4ZWQgcG9zaXRpb24gbGF5ZXIgaXMgbm90IGNvbXBvc2l0ZWQgaW4g
dGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAgICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoKSwgZG9uJ3QgbGV0IGZpeGVkIHBv
c2l0aW9uIGxheWVyIG5vdCBjb21wb3NpdGVkIHdpdGggZXhwbGljaXQgcmVhc29ucyBjYXVzZSBz
bG93IHNjcm9sbGluZy4KKyAgICAgICAgMikgaW4gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoKTog
dG8gYXZvaWQgcHJlLXBhaW50aW5nIHRoZSBvdXQtb2YtdmlldyBmaXhlZC1wb3NpdGlvbmVkIGxh
eWVycy4KKworICAgICAgICBBZGRlZCB3aW5kb3cuaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KCkgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRP
YmplY3RzKTogRXhjbHVkZSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBub3QgY29t
cG9zaXRlZCBmb3IgZXhwbGljaXQgcmVhc29ucy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6IEV4dHJhY3Rl
ZCBmcm9tIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMgZm9yIGxh
eW91dCB0ZXN0cy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
b3BlcnRpZXMpOiBNb3ZlZCBjb2RlIGZvciBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyB0byBT
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKTogRG9uJ3Qg
cGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQgZWxlbWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKTogTWFuYWdlcyBtX2ZpeGVk
UG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzVG9CZUNvbXBvc2l0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nRm9yUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Zml4ZWRQb3Np
dGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbik6IE5vdyBvdXRwdXRzIGZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRyZWFzb24uCisgICAgICAgIChSZW5kZXJMYXllckNvbXBvc2l0b3Ip
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6CisKIDIwMTItMTItMTAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYjZhOTU3ZmUwYjdiYWEy
MTMyZDk0MDZkZDlkZTQ2N2IzMjAyODRiLi5mNjJlNjA0YzA3OTg1NjI0ZDMzNjFjODQyZmIzNmJm
Y2NkMmE1MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMTAgIFhpYW56
aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhj
bHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgRXhwb3J0
IHN5bWJvbCBQYWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpLgorCisgICAg
ICAgICogd2luL1dlYktpdDIuZGVmLmluOgorCiAyMDEyLTEyLTEwICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdLUGFnZVNldEludmFsaWRNZXNz
YWdlRnVuY3Rpb24gc3R1YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAzZmViNWI0ZDAyYzdmOWZl
OGE1NGQ4MTE5ZjNiZGU5ZjYwOTY0NWMwLi41ZGJiMzUxZTliMjgzYTBkNzI2NWU0ZWZiOTVkNGU5
MmQ0NzljODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzY1LDYgKzc2NSw3IEBAIF9fWk43
V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdgogX19aTjdXZWJDb3JlNFBh
Z2UyNXN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1
c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3Rv
bUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAorX19aTjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMzJzZXRNZW1vcnlDYWNo
ZUNsaWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU0UGFnZTM1cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzNnNldFNob3VsZFN1cHBy
ZXNzU2Nyb2xsYmFyQW5pbWF0aW9uc0ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAxNTJkYWY4ZGEz
ODkwNTg4YzBlMjU1MjIxYmJkZDQ3NWNkZGNjMmZkLi42NzA3ODIzMzYyZGEzZDJjNmZlYWY5ZDFm
OTZiY2QzYmVhMDcxZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI1NCw2ICsyNTQsMTcgQEAg
U3RyaW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCitTdHJpbmcgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQo
KQoreworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgaWYgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+bWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwog
c3RydWN0IFZpZXdNb2RlSW5mbyB7CiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBQYWdlOjpW
aWV3TW9kZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0NDNhYjI2MGIxOTRiMzc1ZWJlZWVmY2Rh
NzRjMGI2NGZhMzZiMDBjLi42YzM5NTUwZmFlMDVhYmNjNDQ2MzI0NTY4NWMwMGYyNWRlODBkNDc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtMTk2LDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAK
ICAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworICAgICAgICBTdHJp
bmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKIAogICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgICAg
IFByb2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggY2Q5NDMyYzJhODJkOGUwMTgwMDc0N2M0YjJmZDA4NzRl
MDllYjI2Mi4uOTQzYjNlYzdkYWVjY2E1YWVhZmVjZTVhZTE4NjY2N2M2M2YyMzQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtMzQzLDggKzM0Myw5IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhh
c1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAgICAg
ICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsKICAgICAg
ICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkgfHwg
IXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWlu
ZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVsT2Jq
ZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRv
UmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxheWVyKCk7
CisgICAgICAgIC8vIEFueSBleHBsaWNpdCByZWFzb24gdGhhdCBhIGZpeGVkIHBvc2l0aW9uIGVs
ZW1lbnQgaXMgbm90IGNvbXBvc2l0ZWQgc2hvdWxkbid0IGNhdXNlIHNsb3cgc2Nyb2xsaW5nLgor
ICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBsYXllci0+Y29tcG9zaXRvcigp
LT5maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKGxheWVyKSA9PSBSZW5kZXJM
YXllckNvbXBvc2l0b3I6Ok5vUmVhc29uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM5OCw0ICszOTksMjkgQEAgU3RyaW5nIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKSBjb25zdAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyByZWFzb25z
KQoreworICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKKworICAgIGlmIChyZWFzb25z
ICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkZvcmNlZE9uTWFpblRocmVhZCkKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIkZvcmNlZCBvbiBtYWluIHRocmVhZCwgIik7CisgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQorICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiKTsK
KyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJIYXMgdmlld3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0
IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIik7CisgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSXMgaW1hZ2UgZG9jdW1lbnQsICIpOworCisgICAgaWYgKHN0
cmluZ0J1aWxkZXIubGVuZ3RoKCkpCisgICAgICAgIHN0cmluZ0J1aWxkZXIucmVzaXplKHN0cmlu
Z0J1aWxkZXIubGVuZ3RoKCkgLSAyKTsKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpOworfQorCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnNBc1RleHQobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGMyZjFmYTg2NTBlYWI0MDI1ZGUzZGJkOTI2
ZDBjNmY5ODUyMzUxZjIuLmYyNTEwY2NhNTEyN2JlMGZhODJjODk1Y2VmNzg5YThiNGU4ZTQ4MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaApAQCAtMTUwLDYgKzE1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllcios
IGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxh
eWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KIAorICAgIHN0YXRpYyBTdHJpbmcgbWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMpOwor
ICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0OworCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA1ZDM3YmUyZjUzM2FlNmFmZTM1OTQ3MzliNmU4
NmQ3YzU1OGQzMzIzLi4xYWQ1ZmEyOGM2NzJkZTFiMDQ4YzgzOTg1ZGUzNjNhYTY4ODM2NGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTIyNywxOCArMjI3LDcgQEAgdm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBp
bnQgaW5kZW50KSBjb24KIAogICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpIHsKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwot
ICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiOwotICAg
ICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkZvcmNlZE9uTWFpblRocmVhZCkKLSAgICAgICAgICAgIHRz
IDw8ICJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
SGFzU2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICAgICAgdHMgPDwgIkhhcyBzbG93IHJlcGFp
bnQgb2JqZWN0cywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCi0gICAgICAgICAgICB0
cyA8PCAiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5n
IGZpeGVkIGxheWVycywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZp
eGVkT2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVj
dHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQotICAgICAg
ICAgICAgdHMgPDwgIklzIGltYWdlIGRvY3VtZW50IjsKLSAgICAgICAgdHMgPDwgIilcbiI7Cisg
ICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICIgPDwgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgPDwgIilcbiI7CiAgICAg
fQogCiAgICAgaWYgKG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gIT0gSW50UG9pbnQoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMmM5ZTUwZGMxNGNl
ZjFlNTI0ZTRlZmZlNTdhNDgxMDZhMDFkMWU0Ny4uZTE3NjlmMGE5NjkxMWIxNmIyZjIyYTQzOTZl
NGU5YmI2YWU1MmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zMTQ2LDYgKzMxNDYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJgogICAgICAgICAg
ICAgLy8gSWYgdGhpcyBSZW5kZXJMYXllciBzaG91bGQgcGFpbnQgaW50byBpdHMgYmFja2luZywg
dGhhdCB3aWxsIGJlIGRvbmUgdmlhIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIo
KS4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoY29tcG9z
aXRvcigpLT5maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKHRoaXMpID09IFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6TGF5ZXJCb3VuZHNPdXRPZlZpZXcpIHsKKyAgICAgICAgLy8g
RG9uJ3QgcGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gbGF5ZXJzICh3aGVuIGRvaW5n
IHByZXBhaW50aW5nKSBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciBiZSB2aXNpYmxlCisgICAgICAg
IC8vIHVubGVzcyB0aGVpciBwb3NpdGlvbiBvciB2aWV3cG9ydCBzaXplIGlzIGNoYW5nZWQuCisg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAzN2JiNjUxODYxY2I0YTEy
YWI5NjMwNGVkZmQxOTlkYjViMzkyOWMzLi43Nzc0YzdiZDlkYTgzYjE3MTBmMWVlZmJjNWNlYzIx
OGIwMGUzYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtODA4LDYgKzgwOCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2Vz
dG9yCiAgICAgaWYgKG92ZXJsYXBNYXApCiAgICAgICAgIG92ZXJsYXBNYXAtPmdlb21ldHJ5TWFw
KCkucHVzaE1hcHBpbmdzVG9BbmNlc3RvcihsYXllciwgYW5jZXN0b3JMYXllcik7CiAgICAgCisg
ICAgbV9maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uTWFwLmNsZWFyKCk7CisK
ICAgICAvLyBDbGVhciB0aGUgZmxhZwogICAgIGxheWVyLT5zZXRIYXNDb21wb3NpdGluZ0Rlc2Nl
bmRhbnQoZmFsc2UpOwogICAgIApAQCAtODQzLDcgKzg0NSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFu
Y2VzdG9yCiAgICAgQ29tcG9zaXRpbmdTdGF0ZSBjaGlsZFN0YXRlKGNvbXBvc2l0aW5nU3RhdGUp
OwogICAgIGNoaWxkU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyA9IGZhbHNlOwogCi0gICAg
Ym9vbCB3aWxsQmVDb21wb3NpdGVkID0gbmVlZHNUb0JlQ29tcG9zaXRlZChsYXllcik7CisgICAg
Rml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiBmaXhlZFBvc2l0aW9uTGF5ZXJO
b3RDb21wb3NpdGVkUmVhc29uID0gTm9SZWFzb247CisgICAgYm9vbCB3aWxsQmVDb21wb3NpdGVk
ID0gbmVlZHNUb0JlQ29tcG9zaXRlZChsYXllciwgJmZpeGVkUG9zaXRpb25MYXllck5vdENvbXBv
c2l0ZWRSZWFzb24pOwogICAgIGlmICh3aWxsQmVDb21wb3NpdGVkKSB7CiAgICAgICAgIC8vIFRl
bGwgdGhlIHBhcmVudCBpdCBoYXMgY29tcG9zaXRpbmcgZGVzY2VuZGFudHMuCiAgICAgICAgIGNv
bXBvc2l0aW5nU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyA9IHRydWU7CkBAIC04NTIsNyAr
ODU1LDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1Jl
cXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKIAogICAgICAgICBpZiAob3ZlcmxhcE1h
cCkKICAgICAgICAgICAgIG92ZXJsYXBNYXAtPnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcigpOwot
ICAgIH0KKyAgICB9IGVsc2UgaWYgKGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFz
b24gIT0gTm9SZWFzb24pCisgICAgICAgIG1fZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRl
ZFJlYXNvbk1hcC5zZXQobGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFz
b24pOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0
b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKQEAgLTE1NTUsMTggKzE1NTksMTggQEAgYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3VsZFByb3BhZ2F0ZUNvbXBvc2l0aW5nVG9FbmNsb3Np
bmdGcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6bmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIp
IGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNUb0JlQ29tcG9zaXRlZChj
b25zdCBSZW5kZXJMYXllciogbGF5ZXIsIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRS
ZWFzb24qIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAg
ICAgaWYgKCFjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGxheWVyKSB8fCBsYXllci0+bXVz
dENvbXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpIHx8IChpbkNvbXBvc2l0aW5nTW9kZSgpICYm
IGxheWVyLT5pc1Jvb3RMYXllcigpKTsKKyAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0xh
eWVyKGxheWVyLCBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKSB8fCBsYXll
ci0+bXVzdENvbXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpIHx8IChpbkNvbXBvc2l0aW5nTW9k
ZSgpICYmIGxheWVyLT5pc1Jvb3RMYXllcigpKTsKIH0KIAogLy8gTm90ZTogdGhpcyBzcGVjaWZp
ZXMgd2hldGhlciB0aGUgUkwgbmVlZHMgYSBjb21wb3NpdGluZyBsYXllciBmb3IgaW50cmluc2lj
IHJlYXNvbnMuCiAvLyBVc2UgbmVlZHNUb0JlQ29tcG9zaXRlZCgpIHRvIGRldGVybWluZSBpZiBh
IFJMIGFjdHVhbGx5IG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIuCiAvLyBzdGF0aWMKLWJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVu
ZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIEZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24qIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0
ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGxheWVyLT5y
ZW5kZXJlcigpOwogICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0ZSBvZiBhIHJlZmxlY3Rpb24g
c2hvdWxkIG1hdGNoIHRoYXQgb2YgaXRzIHJlZmxlY3RlZCBsYXllci4KQEAgLTE1ODQsNyArMTU4
OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5
ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjCiAgICAgICAgIHx8IGNsaXBzQ29tcG9zaXRp
bmdEZXNjZW5kYW50cyhsYXllcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckFu
aW1hdGlvbihyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRl
cnMocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihy
ZW5kZXJlciwgbGF5ZXIpCisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlv
bihyZW5kZXJlciwgbGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24p
CiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhsYXll
cikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckJsZW5kaW5nKHJlbmRlcmVyKTsK
IH0KQEAgLTE5NjIsNyArMTk2Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1
aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAjZW5kaWYK
IH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQ
b3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciogbGF5ZXIp
IGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXll
ciwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogZml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKIHsKICAgICAvLyBwb3NpdGlvbjpmaXhlZCBl
bGVtZW50cyB0aGF0IGNyZWF0ZSB0aGVpciBvd24gc3RhY2tpbmcgY29udGV4dCAoZS5nLiBoYXZl
IGFuIGV4cGxpY2l0IHotaW5kZXgsCiAgICAgLy8gb3BhY2l0eSwgdHJhbnNmb3JtKSBjYW4gZ2V0
IHRoZWlyIG93biBjb21wb3NpdGVkIGxheWVyLiBBIHN0YWNraW5nIGNvbnRleHQgaXMgcmVxdWly
ZWQgb3RoZXJ3aXNlCkBAIC0xOTgzLDE1ICsxOTg3LDIxIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiByZW5k
ZXJlCiAKICAgICAvLyBEb24ndCBwcm9tb3RlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHRoYXQg
YXJlIGRlc2NlbmRhbnRzIG9mIHRyYW5zZm9ybWVkIGVsZW1lbnRzLgogICAgIC8vIFRoZXkgd2ls
bCBzdGF5IGZpeGVkIHdydCB0aGUgdHJhbnNmb3JtZWQgZWxlbWVudCByYXRoZXIgdGhhbiB0aGUg
ZW5jbG9zaW5nIGZyYW1lLgotICAgIGlmIChjb250YWluZXIgIT0gbV9yZW5kZXJWaWV3KQorICAg
IGlmIChjb250YWluZXIgIT0gbV9yZW5kZXJWaWV3KSB7CisgICAgICAgIGlmIChmaXhlZFBvc2l0
aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQorICAgICAgICAgICAgKmZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRSZWFzb24gPSBEZXNjZW5kYW50T2ZUcmFuc2Zvcm1lZEVsZW1lbnQ7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBGaXhlZCBwb3NpdGlvbiBl
bGVtZW50cyB0aGF0IGFyZSBpbnZpc2libGUgaW4gdGhlIGN1cnJlbnQgdmlldyBkb24ndCBnZXQg
dGhlaXIgb3duIGxheWVyLgogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVy
Vmlldy0+ZnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50UmVjdCB2aWV3Qm91bmRzID0gZnJhbWVW
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICAgICAgSW50UmVjdCBsYXllckJvdW5kcyA9
IGNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIsIHJvb3RSZW5kZXJMYXllcigpKTsKLSAg
ICAgICAgaWYgKCF2aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJCb3VuZHMpKQorICAgICAgICBp
ZiAoIXZpZXdCb3VuZHMuaW50ZXJzZWN0cyhsYXllckJvdW5kcykpIHsKKyAgICAgICAgICAgIGlm
IChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQorICAgICAgICAgICAgICAg
ICpmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uID0gTGF5ZXJCb3VuZHNPdXRP
ZlZpZXc7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaAppbmRleCAyNDk2OWRmODUyYzk1MjcxNGNkZTkzZGE2ZmZhYTFmZGY5NDlm
ODkzLi43N2QyZmVkN2Y0ZjYwYWIyZDI3NmFiMWYwNDg3NDYzMjc0OTcwOTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclVwZGF0ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjI5LDYgKzIzMCwx
NCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAorICAgIGVudW0gRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJl
YXNvbiB7CisgICAgICAgIE5vUmVhc29uLAorICAgICAgICBMYXllckJvdW5kc091dE9mVmlldywK
KyAgICAgICAgRGVzY2VuZGFudE9mVHJhbnNmb3JtZWRFbGVtZW50LAorICAgIH07CisKKyAgICBG
aXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIGZpeGVkUG9zaXRpb25MYXllck5v
dENvbXBvc2l0ZWRSZWFzb24oY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdCB7IHJldHVy
biBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuZ2V0KGxheWVyKTsg
fQorCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAKQEAgLTI0Myw5ICsyNTIsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVycyhHcmFwaGljc0xheWVyVXBk
YXRlciopIE9WRVJSSURFOwogICAgIAogICAgIC8vIFdoZXRoZXIgdGhlIGdpdmVuIFJMIG5lZWRz
IGEgY29tcG9zaXRpbmcgbGF5ZXIuCi0gICAgYm9vbCBuZWVkc1RvQmVDb21wb3NpdGVkKGNvbnN0
IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1RvQmVDb21wb3NpdGVkKGNvbnN0
IFJlbmRlckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogPSAw
KSBjb25zdDsKICAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBoYXMgYW4gaW50cmluc2ljIG5lZWQg
Zm9yIGNvbXBvc2l0aW5nIGxheWVyLgotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0xheWVy
KGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5n
TGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVk
UmVhc29uKiA9IDApIGNvbnN0OwogICAgIC8vIFdoZXRoZXIgdGhlIGxheWVyIGNvdWxkIGV2ZXIg
YmUgY29tcG9zaXRlZC4KICAgICBib29sIGNhbkJlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXll
ciopIGNvbnN0OwogCkBAIC0zMTAsNyArMzE5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wg
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckJsZW5kaW5nKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNv
bnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZSgpIGNv
bnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0
aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyTGF5ZXIqLCBGaXhlZFBv
c2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0OwogICAgIGJvb2wgcmVx
dWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRlckxheWVyKikg
Y29uc3Q7CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24oUmVu
ZGVyT2JqZWN0KiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFudHMsIGJvb2wgaGFzM0RUcmFu
c2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNv
biYpIGNvbnN0OwogCkBAIC0zOTEsNiArNDAwLDkgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9v
YmxpZ2F0b3J5QmFja2luZ1N0b3JlQnl0ZXM7CiAgICAgZG91YmxlIG1fc2Vjb25kYXJ5QmFja2lu
Z1N0b3JlQnl0ZXM7CiAjZW5kaWYKKworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJM
YXllciosIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24+IEZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7CisgICAgRml4ZWRQb3NpdGlvbkxheWVyTm90
Q29tcG9zaXRlZFJlYXNvbk1hcCBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFz
b25NYXA7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBmZjgy
ODlhZWE3NGM2MjdiN2ZhZmNlMzIwMjgxNDE5ZTk5MmY4MDM4Li5iMTJhZDk0YTBlYzI1MmFjZGU1
NTFhYmZiNjg0ZGRhODVlMWY4N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xNDYwLDYgKzE0NjAsMjAgQEAgU3RyaW5nIEludGVybmFsczo6c2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICByZXR1
cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiB9CiAKK1N0cmluZyBJbnRlcm5h
bHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZy
YW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBw
YWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpOworfQorCiB2b2lkIEludGVy
bmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1bWVudCogZG9jdW1lbnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDViYzI2ODU2ODFjODBkMWJmOWE2MDZjY2QyYmU3
NmU0ZWFhNzVkNTAuLmIxMjFkOWY3YWUxZDlmZmNkNjNjNDFkNDQ3MTBjNmU3MTI2M2EwYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA4LDYgKzIwOCw4IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqLCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisKICAgICB2b2lkIGdhcmJh
Z2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNkZDNlMzg0ZjgwYjA5YzBmZTlkMGQ3NDg5ZGUyMmI4
NjNlMGY0NDkuLjE2M2U2NzY1N2U0ODhkNjE4Y2Q0ZDdkNTI4YzNhNzcxYTg0ZTk5YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE2NSw2ICsxNjUsNyBAQAogICAgIERP
TVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25h
bF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIERP
TVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBET01TdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAg
IERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmLmluIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluCmluZGV4IGU4Y2U3
ZGJiYjEzNDA0MGU2ZTUxNDFjZTFhY2Y5N2MyNzc3YTFhYjIuLjkwYjNmMjk4NWE3MzQ3YmU2NDc0
MzZjNDY0ZjQxZTcyMWNjMDEyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4KQEAgLTIy
OCw2ICsyMjgsNyBAQCBFWFBPUlRTCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJj
ZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5
QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFs
T2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgog
ICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNU
ZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNG
b3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRv
Y3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERv
Y3VtZW50TWFya2VyQDJAQFoKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXgg
NWI3Nzc3NjdjYTYyNTc4ZWVhYWJlZjI2MWU4Y2VlNjZhNWM1NjVjOS4uMTEwYWRjM2Y3NGM5ZWY3
YzM0MjIzZjk2ODBlYzFiNzZiMDc2MmViMyAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0z
MSw2ICszMSw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxM3NldFBhZ2luYXRpb25FUktOU18xMFBhZ2lu
YXRpb25FOwogX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFnZVNjYWxlRmFjdG9yRWZSS05TXzhJbnRQ
b2ludEU7CiBfWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVmOwogX1pON1dl
YkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXY7CitfWk43V2ViQ29yZTRQYWdl
MzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2OwogX1pON1dlYkNvcmU0UGFnZTE2
c2V0Q2FuU3RhcnRNZWRpYUViOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBO
U18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RFOwogX1pON1dlYkNvcmU0dG9K
U0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMFNoYWRvd1Jv
b3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGY0NWFmYTY5YTQ0NmNkZjE3YzVmMjI0NWY0YmI2MmFkOGEzMGU3NjYuLjM1
YjJmOTExMzVjYmJhZmZhZTllNDBlNTc0ZGY0OGM4NGNiMzJmOGYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMi0xMi0xMCAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRG
aXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3IGZpeGVkIHBvc2l0aW9uIGVs
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNj
cm9sbC1yZWFzb24uaHRtbDogRW5zdXJlIHNsb3ctc2Nyb2xsaW5nIGlzIG5vdCB0cmlnZ2VyZWQu
CisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0
LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50
eHQ6IFVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2YgbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMuCisKIDIwMTItMTItMTAgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTWFyayBhbiBlbmNyeXB0ZWQgbWVkaWEgdGVzdCBhcyBmYWlsaW5nIGFmdGVy
IGh0dHA6Ly9jcnJldi5jb20vMTcyMTc1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVh
c29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5MjdiZmI5NjNlZDlmYTVhMGYwZWJkZmFjMDAwNWE5OGU1ZjRjZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhl
ZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIgQEAKK01haW4gdGhyZWFkIHNjcm9sbGluZyByZWFzb25zIHNob3VsZCBiZSBibGFuazoK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Ny
b2xsLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNzg0NjRlN2M1ODBmMGZiZThiOWYyOTRjYmVi
MzRhMTU5MDc4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9s
YXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLmh0
bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+Cis8
c3R5bGU+CisgIC5maXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVkOworICAgIHdpZHRoOiAxMHB4
OworICAgIGhlaWdodDogMTBweDsKKyAgICB6LWluZGV4OiAtMTsKKyAgfQorPC9zdHlsZT4KKwor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAod2luZG93LmludGVybmFscykK
KyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4
ZWRQb3NpdGlvbih0cnVlKTsKKworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgZnVuY3Rpb24oKSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLm1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij4KKyAg
TWFpbiB0aHJlYWQgc2Nyb2xsaW5nIHJlYXNvbnMgc2hvdWxkIGJlIGJsYW5rOgorICA8cHJlIGlk
PSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+Cis8L2Rpdj4KKworPCEtLSBvdXQg
b2YgdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50IHNob3VsZCBub3QgdHJpZ2dlciBtYWluIHRo
cmVhZCBzY3JvbGxpbmcuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQiPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxp
bmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4MGNmMWNiYWE4ZGQxY2ViMWY5ZGIxMjI1YzhmMzEx
MTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2EwMjBlYzRmMWJiYjE4YmQyMGUyYWMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVl
LXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50
eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xsaW5nIG5vZGUKICAgKHZpZXdwb3J0IHJlY3QgMCAw
IDgwMCA2MDApCiAgIChjb250ZW50cyBzaXplIDgwMCA2MDApCi0gIChTY3JvbGxpbmcgb24gbWFp
biB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCApCisgIChTY3JvbGxp
bmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3RzKQogKQog
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMGMxNGYwMzNlYjdmMTNl
NWI2OGEwYmI5OTdkNWYyYzA4NjU1YmFiMC4uYTEzNDc5N2YzN2ZkNTFmMWMzNDBiNmM5MTg1MTZl
OTMxZWI0ZWExYSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEyLTEyLTEwICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVw
YWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRp
b24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV4cG9ydCBzeW1ib2wgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQo
KS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTIt
MTItMTAgIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXSBDaGFuZ2UgdGhlIG1pbmltdW0gcmVxdWlyZWQgRUZMIHZlcnNpb24gdG8gMS42Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178834</attachid>
            <date>2012-12-11 10:32:32 -0800</date>
            <delta_ts>2012-12-11 11:16:31 -0800</delta_ts>
            <desc>Let RLC manage reasons of fixedpos layer not composited</desc>
            <filename>bug-102543-20121211182953.patch</filename>
            <type>text/plain</type>
            <size>27373</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiMDgxOTExNzQ3NDU5
NDBhYjk3NTVjOTM0OTYzNTJiMWRlMjJjMi4uNjBmNzcyZjJiMDk2MjJlMjJjYjk2NDI2NmI5NTI4
YTM2NmZjYWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEyLTEwICBYaW5h
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIENoZWNr
IHJlYXNvbiB0aGF0IGEgZml4ZWQgcG9zaXRpb24gbGF5ZXIgaXMgbm90IGNvbXBvc2l0ZWQgaW4g
dGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAgICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoKSwgZG9uJ3QgbGV0IGZpeGVkIHBv
c2l0aW9uIGxheWVyIG5vdCBjb21wb3NpdGVkIHdpdGggZXhwbGljaXQgcmVhc29ucyBjYXVzZSBz
bG93IHNjcm9sbGluZy4KKyAgICAgICAgMikgaW4gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoKTog
dG8gYXZvaWQgcHJlLXBhaW50aW5nIHRoZSBvdXQtb2YtdmlldyBmaXhlZC1wb3NpdGlvbmVkIGxh
eWVycy4KKworICAgICAgICBBZGRlZCB3aW5kb3cuaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KCkgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRP
YmplY3RzKTogRXhjbHVkZSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBub3QgY29t
cG9zaXRlZCBmb3IgZXhwbGljaXQgcmVhc29ucy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6IEV4dHJhY3Rl
ZCBmcm9tIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMgZm9yIGxh
eW91dCB0ZXN0cy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
b3BlcnRpZXMpOiBNb3ZlZCBjb2RlIGZvciBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyB0byBT
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKTogRG9uJ3Qg
cGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQgZWxlbWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKTogTWFuYWdlcyBtX2ZpeGVk
UG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzVG9CZUNvbXBvc2l0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nRm9yUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Zml4ZWRQb3Np
dGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbik6IE5vdyBvdXRwdXRzIGZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRyZWFzb24uCisgICAgICAgIChSZW5kZXJMYXllckNvbXBvc2l0b3Ip
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6CisKIDIwMTItMTItMTAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYjZhOTU3ZmUwYjdiYWEy
MTMyZDk0MDZkZDlkZTQ2N2IzMjAyODRiLi5mNjJlNjA0YzA3OTg1NjI0ZDMzNjFjODQyZmIzNmJm
Y2NkMmE1MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMTAgIFhpYW56
aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhj
bHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgRXhwb3J0
IHN5bWJvbCBQYWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpLgorCisgICAg
ICAgICogd2luL1dlYktpdDIuZGVmLmluOgorCiAyMDEyLTEyLTEwICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdLUGFnZVNldEludmFsaWRNZXNz
YWdlRnVuY3Rpb24gc3R1YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAzZmViNWI0ZDAyYzdmOWZl
OGE1NGQ4MTE5ZjNiZGU5ZjYwOTY0NWMwLi41ZGJiMzUxZTliMjgzYTBkNzI2NWU0ZWZiOTVkNGU5
MmQ0NzljODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzY1LDYgKzc2NSw3IEBAIF9fWk43
V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdgogX19aTjdXZWJDb3JlNFBh
Z2UyNXN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1
c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3Rv
bUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAorX19aTjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMzJzZXRNZW1vcnlDYWNo
ZUNsaWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU0UGFnZTM1cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzNnNldFNob3VsZFN1cHBy
ZXNzU2Nyb2xsYmFyQW5pbWF0aW9uc0ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAxNTJkYWY4ZGEz
ODkwNTg4YzBlMjU1MjIxYmJkZDQ3NWNkZGNjMmZkLi42NzA3ODIzMzYyZGEzZDJjNmZlYWY5ZDFm
OTZiY2QzYmVhMDcxZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI1NCw2ICsyNTQsMTcgQEAg
U3RyaW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCitTdHJpbmcgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQo
KQoreworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgaWYgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+bWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwog
c3RydWN0IFZpZXdNb2RlSW5mbyB7CiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBQYWdlOjpW
aWV3TW9kZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0NDNhYjI2MGIxOTRiMzc1ZWJlZWVmY2Rh
NzRjMGI2NGZhMzZiMDBjLi42YzM5NTUwZmFlMDVhYmNjNDQ2MzI0NTY4NWMwMGYyNWRlODBkNDc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtMTk2LDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAK
ICAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworICAgICAgICBTdHJp
bmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKIAogICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgICAg
IFByb2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggY2Q5NDMyYzJhODJkOGUwMTgwMDc0N2M0YjJmZDA4NzRl
MDllYjI2Mi4uOTQzYjNlYzdkYWVjY2E1YWVhZmVjZTVhZTE4NjY2N2M2M2YyMzQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtMzQzLDggKzM0Myw5IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhh
c1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAgICAg
ICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsKICAgICAg
ICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkgfHwg
IXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWlu
ZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVsT2Jq
ZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRv
UmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxheWVyKCk7
CisgICAgICAgIC8vIEFueSBleHBsaWNpdCByZWFzb24gdGhhdCBhIGZpeGVkIHBvc2l0aW9uIGVs
ZW1lbnQgaXMgbm90IGNvbXBvc2l0ZWQgc2hvdWxkbid0IGNhdXNlIHNsb3cgc2Nyb2xsaW5nLgor
ICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBsYXllci0+Y29tcG9zaXRvcigp
LT5maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKGxheWVyKSA9PSBSZW5kZXJM
YXllckNvbXBvc2l0b3I6Ok5vUmVhc29uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM5OCw0ICszOTksMjkgQEAgU3RyaW5nIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKSBjb25zdAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyByZWFzb25z
KQoreworICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKKworICAgIGlmIChyZWFzb25z
ICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkZvcmNlZE9uTWFpblRocmVhZCkKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIkZvcmNlZCBvbiBtYWluIHRocmVhZCwgIik7CisgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQorICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiKTsK
KyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJIYXMgdmlld3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0
IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIik7CisgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSXMgaW1hZ2UgZG9jdW1lbnQsICIpOworCisgICAgaWYgKHN0
cmluZ0J1aWxkZXIubGVuZ3RoKCkpCisgICAgICAgIHN0cmluZ0J1aWxkZXIucmVzaXplKHN0cmlu
Z0J1aWxkZXIubGVuZ3RoKCkgLSAyKTsKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpOworfQorCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnNBc1RleHQobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGMyZjFmYTg2NTBlYWI0MDI1ZGUzZGJkOTI2
ZDBjNmY5ODUyMzUxZjIuLmYyNTEwY2NhNTEyN2JlMGZhODJjODk1Y2VmNzg5YThiNGU4ZTQ4MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaApAQCAtMTUwLDYgKzE1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllcios
IGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxh
eWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KIAorICAgIHN0YXRpYyBTdHJpbmcgbWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMpOwor
ICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0OworCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA1ZDM3YmUyZjUzM2FlNmFmZTM1OTQ3MzliNmU4
NmQ3YzU1OGQzMzIzLi4xYWQ1ZmEyOGM2NzJkZTFiMDQ4YzgzOTg1ZGUzNjNhYTY4ODM2NGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTIyNywxOCArMjI3LDcgQEAgdm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBp
bnQgaW5kZW50KSBjb24KIAogICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpIHsKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwot
ICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiOwotICAg
ICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkZvcmNlZE9uTWFpblRocmVhZCkKLSAgICAgICAgICAgIHRz
IDw8ICJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
SGFzU2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICAgICAgdHMgPDwgIkhhcyBzbG93IHJlcGFp
bnQgb2JqZWN0cywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCi0gICAgICAgICAgICB0
cyA8PCAiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5n
IGZpeGVkIGxheWVycywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZp
eGVkT2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVj
dHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQotICAgICAg
ICAgICAgdHMgPDwgIklzIGltYWdlIGRvY3VtZW50IjsKLSAgICAgICAgdHMgPDwgIilcbiI7Cisg
ICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICIgPDwgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgPDwgIilcbiI7CiAgICAg
fQogCiAgICAgaWYgKG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gIT0gSW50UG9pbnQoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMmM5ZTUwZGMxNGNl
ZjFlNTI0ZTRlZmZlNTdhNDgxMDZhMDFkMWU0Ny4uZTE3NjlmMGE5NjkxMWIxNmIyZjIyYTQzOTZl
NGU5YmI2YWU1MmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zMTQ2LDYgKzMxNDYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJgogICAgICAgICAg
ICAgLy8gSWYgdGhpcyBSZW5kZXJMYXllciBzaG91bGQgcGFpbnQgaW50byBpdHMgYmFja2luZywg
dGhhdCB3aWxsIGJlIGRvbmUgdmlhIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIo
KS4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoY29tcG9z
aXRvcigpLT5maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKHRoaXMpID09IFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6TGF5ZXJCb3VuZHNPdXRPZlZpZXcpIHsKKyAgICAgICAgLy8g
RG9uJ3QgcGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gbGF5ZXJzICh3aGVuIGRvaW5n
IHByZXBhaW50aW5nKSBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciBiZSB2aXNpYmxlCisgICAgICAg
IC8vIHVubGVzcyB0aGVpciBwb3NpdGlvbiBvciB2aWV3cG9ydCBzaXplIGlzIGNoYW5nZWQuCisg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAzN2JiNjUxODYxY2I0YTEy
YWI5NjMwNGVkZmQxOTlkYjViMzkyOWMzLi45YTliZTJlZjM4MDU3YWRjYWY4NDY4YTg4ZDI2Zjdk
MGJjNDQyNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtNDUzLDYgKzQ1Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBk
YXRlCiAgICAgICAgIENvbXBvc2l0aW5nU3RhdGUgY29tcFN0YXRlKHVwZGF0ZVJvb3QsIG1fY29t
cG9zaXRpbmdDb25zdWx0c092ZXJsYXApOwogICAgICAgICBib29sIGxheWVyc0NoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgYm9vbCBzYXczRFRyYW5zZm9ybSA9IGZhbHNlOworICAgICAgICBtX2Zp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuY2xlYXIoKTsKICAgICAgICAg
aWYgKG1fY29tcG9zaXRpbmdDb25zdWx0c092ZXJsYXApIHsKICAgICAgICAgICAgIE92ZXJsYXBN
YXAgb3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOwogICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5n
UmVxdWlyZW1lbnRzKDAsIHVwZGF0ZVJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RNYXAsIGNvbXBT
dGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgc2F3M0RUcmFuc2Zvcm0pOwpAQCAtODQzLDcgKzg0NCw4IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVu
dHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgQ29tcG9zaXRpbmdTdGF0ZSBjaGlsZFN0YXRl
KGNvbXBvc2l0aW5nU3RhdGUpOwogICAgIGNoaWxkU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGlu
ZyA9IGZhbHNlOwogCi0gICAgYm9vbCB3aWxsQmVDb21wb3NpdGVkID0gbmVlZHNUb0JlQ29tcG9z
aXRlZChsYXllcik7CisgICAgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiBm
aXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uID0gTm9SZWFzb247CisgICAgYm9v
bCB3aWxsQmVDb21wb3NpdGVkID0gbmVlZHNUb0JlQ29tcG9zaXRlZChsYXllciwgJmZpeGVkUG9z
aXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pOwogICAgIGlmICh3aWxsQmVDb21wb3NpdGVk
KSB7CiAgICAgICAgIC8vIFRlbGwgdGhlIHBhcmVudCBpdCBoYXMgY29tcG9zaXRpbmcgZGVzY2Vu
ZGFudHMuCiAgICAgICAgIGNvbXBvc2l0aW5nU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyA9
IHRydWU7CkBAIC04NTIsNyArODU0LDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNv
bXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKIAogICAg
ICAgICBpZiAob3ZlcmxhcE1hcCkKICAgICAgICAgICAgIG92ZXJsYXBNYXAtPnB1c2hDb21wb3Np
dGluZ0NvbnRhaW5lcigpOwotICAgIH0KKyAgICB9IGVsc2UgaWYgKGZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb24gIT0gTm9SZWFzb24pCisgICAgICAgIG1fZml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC5zZXQobGF5ZXIsIGZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb24pOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVy
TGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKQEAgLTE1NTUsMTgg
KzE1NTgsMTggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3VsZFByb3BhZ2F0ZUNv
bXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVl
ZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIEZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRSZWFzb24qIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRS
ZWFzb24pIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGxh
eWVyKSB8fCBsYXllci0+bXVzdENvbXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpIHx8IChpbkNv
bXBvc2l0aW5nTW9kZSgpICYmIGxheWVyLT5pc1Jvb3RMYXllcigpKTsKKyAgICByZXR1cm4gcmVx
dWlyZXNDb21wb3NpdGluZ0xheWVyKGxheWVyLCBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3Np
dGVkUmVhc29uKSB8fCBsYXllci0+bXVzdENvbXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpIHx8
IChpbkNvbXBvc2l0aW5nTW9kZSgpICYmIGxheWVyLT5pc1Jvb3RMYXllcigpKTsKIH0KIAogLy8g
Tm90ZTogdGhpcyBzcGVjaWZpZXMgd2hldGhlciB0aGUgUkwgbmVlZHMgYSBjb21wb3NpdGluZyBs
YXllciBmb3IgaW50cmluc2ljIHJlYXNvbnMuCiAvLyBVc2UgbmVlZHNUb0JlQ29tcG9zaXRlZCgp
IHRvIGRldGVybWluZSBpZiBhIFJMIGFjdHVhbGx5IG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIu
CiAvLyBzdGF0aWMKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciog
bGF5ZXIsIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24qIGZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0
ZSBvZiBhIHJlZmxlY3Rpb24gc2hvdWxkIG1hdGNoIHRoYXQgb2YgaXRzIHJlZmxlY3RlZCBsYXll
ci4KQEAgLTE1ODQsNyArMTU4Nyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1
aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjCiAgICAgICAg
IHx8IGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhsYXllcikKICAgICAgICAgfHwgcmVxdWly
ZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXND
b21wb3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIpCisgICAgICAgIHx8IHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5v
dENvbXBvc2l0ZWRSZWFzb24pCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVy
Zmxvd1Njcm9sbGluZyhsYXllcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckJs
ZW5kaW5nKHJlbmRlcmVyKTsKIH0KQEAgLTE5NjIsNyArMTk2NSw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVuZGVyT2JqZWN0
KiByZW5kZXJlCiAjZW5kaWYKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IFJlbmRlckxheWVyKiBsYXllciwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNv
biogZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKIHsKICAgICAv
LyBwb3NpdGlvbjpmaXhlZCBlbGVtZW50cyB0aGF0IGNyZWF0ZSB0aGVpciBvd24gc3RhY2tpbmcg
Y29udGV4dCAoZS5nLiBoYXZlIGFuIGV4cGxpY2l0IHotaW5kZXgsCiAgICAgLy8gb3BhY2l0eSwg
dHJhbnNmb3JtKSBjYW4gZ2V0IHRoZWlyIG93biBjb21wb3NpdGVkIGxheWVyLiBBIHN0YWNraW5n
IGNvbnRleHQgaXMgcmVxdWlyZWQgb3RoZXJ3aXNlCkBAIC0xOTgzLDE1ICsxOTg2LDIxIEBAIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24o
UmVuZGVyT2JqZWN0KiByZW5kZXJlCiAKICAgICAvLyBEb24ndCBwcm9tb3RlIGZpeGVkIHBvc2l0
aW9uIGVsZW1lbnRzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIHRyYW5zZm9ybWVkIGVsZW1lbnRz
LgogICAgIC8vIFRoZXkgd2lsbCBzdGF5IGZpeGVkIHdydCB0aGUgdHJhbnNmb3JtZWQgZWxlbWVu
dCByYXRoZXIgdGhhbiB0aGUgZW5jbG9zaW5nIGZyYW1lLgotICAgIGlmIChjb250YWluZXIgIT0g
bV9yZW5kZXJWaWV3KQorICAgIGlmIChjb250YWluZXIgIT0gbV9yZW5kZXJWaWV3KSB7CisgICAg
ICAgIGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQorICAgICAgICAg
ICAgKmZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gPSBEZXNjZW5kYW50T2ZU
cmFuc2Zvcm1lZEVsZW1lbnQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICAv
LyBGaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBpbnZpc2libGUgaW4gdGhlIGN1cnJl
bnQgdmlldyBkb24ndCBnZXQgdGhlaXIgb3duIGxheWVyLgogICAgIGlmIChGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50UmVjdCB2
aWV3Qm91bmRzID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICAgICAgSW50
UmVjdCBsYXllckJvdW5kcyA9IGNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIsIHJvb3RS
ZW5kZXJMYXllcigpKTsKLSAgICAgICAgaWYgKCF2aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJC
b3VuZHMpKQorICAgICAgICBpZiAoIXZpZXdCb3VuZHMuaW50ZXJzZWN0cyhsYXllckJvdW5kcykp
IHsKKyAgICAgICAgICAgIGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
KQorICAgICAgICAgICAgICAgICpmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
ID0gTGF5ZXJCb3VuZHNPdXRPZlZpZXc7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCAyNDk2OWRmODUyYzk1MjcxNGNk
ZTkzZGE2ZmZhYTFmZGY5NDlmODkzLi43N2QyZmVkN2Y0ZjYwYWIyZDI3NmFiMWYwNDg3NDYzMjc0
OTcwOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclVwZGF0
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFj
a2luZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMjI5LDYgKzIzMCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIGVudW0gRml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbiB7CisgICAgICAgIE5vUmVhc29uLAorICAgICAgICBMYXll
ckJvdW5kc091dE9mVmlldywKKyAgICAgICAgRGVzY2VuZGFudE9mVHJhbnNmb3JtZWRFbGVtZW50
LAorICAgIH07CisKKyAgICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIGZp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24oY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFz
b25NYXAuZ2V0KGxheWVyKTsgfQorCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAK
QEAgLTI0Myw5ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVy
cyhHcmFwaGljc0xheWVyVXBkYXRlciopIE9WRVJSSURFOwogICAgIAogICAgIC8vIFdoZXRoZXIg
dGhlIGdpdmVuIFJMIG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIuCi0gICAgYm9vbCBuZWVkc1Rv
QmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1Rv
QmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKICAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBoYXMg
YW4gaW50cmluc2ljIG5lZWQgZm9yIGNvbXBvc2l0aW5nIGxheWVyLgotICAgIGJvb2wgcmVxdWly
ZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCBy
ZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqLCBGaXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0OwogICAgIC8vIFdoZXRoZXIgdGhl
IGxheWVyIGNvdWxkIGV2ZXIgYmUgY29tcG9zaXRlZC4KICAgICBib29sIGNhbkJlQ29tcG9zaXRl
ZChjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwogCkBAIC0zMTAsNyArMzE5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKFJlbmRlck9iamVjdCop
IGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckJsZW5kaW5nKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNj
cm9sbGFibGVGcmFtZSgpIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBv
c2l0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9v
bCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyTGF5ZXIqLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNv
bnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNv
bnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9y
SW5kaXJlY3RSZWFzb24oUmVuZGVyT2JqZWN0KiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFu
dHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJl
Y3RDb21wb3NpdGluZ1JlYXNvbiYpIGNvbnN0OwogCkBAIC0zOTEsNiArNDAwLDkgQEAgcHJpdmF0
ZToKICAgICBkb3VibGUgbV9vYmxpZ2F0b3J5QmFja2luZ1N0b3JlQnl0ZXM7CiAgICAgZG91Ymxl
IG1fc2Vjb25kYXJ5QmFja2luZ1N0b3JlQnl0ZXM7CiAjZW5kaWYKKworICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBSZW5kZXJMYXllciosIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRS
ZWFzb24+IEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7CisgICAgRml4
ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcCBtX2ZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBmZjgyODlhZWE3NGM2MjdiN2ZhZmNlMzIwMjgxNDE5ZTk5MmY4MDM4Li5i
MTJhZDk0YTBlYzI1MmFjZGU1NTFhYmZiNjg0ZGRhODVlMWY4N2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDYwLDYgKzE0NjAsMjAgQEAgU3RyaW5nIEludGVybmFs
czo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9u
Q29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiB9
CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBwYWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgp
OworfQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhE
b2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICgh
ZG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDViYzI2ODU2ODFj
ODBkMWJmOWE2MDZjY2QyYmU3NmU0ZWFhNzVkNTAuLmIxMjFkOWY3YWUxZDlmZmNkNjNjNDFkNDQ3
MTBjNmU3MTI2M2EwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA4LDYg
KzIwOCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50
KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICBTdHJpbmcgbWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNkZDNlMzg0ZjgwYjA5
YzBmZTlkMGQ3NDg5ZGUyMmI4NjNlMGY0NDkuLjE2M2U2NzY1N2U0ODhkNjE4Y2Q0ZDdkNTI4YzNh
NzcxYTg0ZTk5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE2NSw2
ICsxNjUsNyBAQAogICAgIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9j
dW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9j
dW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBET01TdHJpbmcgbWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4gRG9jdW1l
bnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmLmluCmluZGV4IGU4Y2U3ZGJiYjEzNDA0MGU2ZTUxNDFjZTFhY2Y5N2MyNzc3YTFhYjIuLjkw
YjNmMjk4NWE3MzQ3YmU2NDc0MzZjNDY0ZjQxZTcyMWNjMDEyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYuaW4KQEAgLTIyOCw2ICsyMjgsNyBAQCBFWFBPUlRTCiAgICAgICAgID9pc1ByZWxv
YWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBa
CiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0
ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBX
ZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP21haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoK
ICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFB
RT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2Rl
QDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKICAgICAgICAgP25leHRTaWJsaW5n
QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0
Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggNWI3Nzc3NjdjYTYyNTc4ZWVhYWJlZjI2MWU4Y2VlNjZhNWM1NjVj
OS4uMTEwYWRjM2Y3NGM5ZWY3YzM0MjIzZjk2ODBlYzFiNzZiMDc2MmViMyAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC0zMSw2ICszMSw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxM3NldFBhZ2lu
YXRpb25FUktOU18xMFBhZ2luYXRpb25FOwogX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFnZVNjYWxl
RmFjdG9yRWZSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2Fs
ZUZhY3RvckVmOwogX1pON1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXY7
CitfWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2Owog
X1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRpYUViOwogX1pON1dlYkNvcmU0dG9KU0VQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RF
OwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOU18xMFNoYWRvd1Jvb3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY0NWFmYTY5YTQ0NmNkZjE3YzVmMjI0NWY0
YmI2MmFkOGEzMGU3NjYuLjM1YjJmOTExMzVjYmJhZmZhZTllNDBlNTc0ZGY0OGM4NGNiMzJmOGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0xMCAgWGlhbnpodSBXYW5nICA8d2FuZ3hp
YW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNW
aXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3
IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0
aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24uaHRtbDogRW5zdXJlIHNsb3ctc2Nyb2xsaW5n
IGlzIG5vdCB0cmlnZ2VyZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNj
cm9sbGluZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2Yg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMuCisKIDIwMTItMTItMTAgIEFkYW0gS2xlaW4gIDxh
ZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFyayBhbiBlbmNyeXB0ZWQgbWVkaWEgdGVz
dCBhcyBmYWlsaW5nIGFmdGVyIGh0dHA6Ly9jcnJldi5jb20vMTcyMTc1CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQt
b2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFz
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MjdiZmI5NjNlZDlmYTVhMGYwZWJkZmFjMDAw
NWE5OGU1ZjRjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9s
YXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK01haW4gdGhyZWFkIHNjcm9sbGluZyByZWFzb25z
IHNob3VsZCBiZSBibGFuazoKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNzg0NjRlN2M1
ODBmMGZiZThiOWYyOTRjYmViMzRhMTU5MDc4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmll
dy1zY3JvbGwtcmVhc29uLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+CisK
KzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgIC5maXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVk
OworICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKKyAgICB6LWluZGV4OiAtMTsK
KyAgfQorPC9zdHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJs
ZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKworICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cu
aW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICB9LCBm
YWxzZSk7CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgc3R5bGU9Imhl
aWdodDogMTAwMHB4Ij4KKyAgTWFpbiB0aHJlYWQgc2Nyb2xsaW5nIHJlYXNvbnMgc2hvdWxkIGJl
IGJsYW5rOgorICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+Cis8
L2Rpdj4KKworPCEtLSBvdXQgb2YgdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50IHNob3VsZCBu
b3QgdHJpZ2dlciBtYWluIHRocmVhZCBzY3JvbGxpbmcuIC0tPgorPGRpdiBjbGFzcz0iZml4ZWQi
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
LXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4MGNmMWNiYWE4ZGQx
Y2ViMWY5ZGIxMjI1YzhmMzExMTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2EwMjBlYzRmMWJiYjE4
YmQyMGUyYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNj
cm9sbGluZy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xsaW5nIG5vZGUKICAg
KHZpZXdwb3J0IHJlY3QgMCAwIDgwMCA2MDApCiAgIChjb250ZW50cyBzaXplIDgwMCA2MDApCi0g
IChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmpl
Y3RzLCApCisgIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVw
YWludCBvYmplY3RzKQogKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggMGMxNGYwMzNlYjdmMTNlNWI2OGEwYmI5OTdkNWYyYzA4NjU1YmFiMC4uYTEzNDc5N2YzN2Zk
NTFmMWMzNDBiNmM5MTg1MTZlOTMxZWI0ZWExYSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTEwICBYaWFuemh1IFdhbmcgIDx3
YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9m
LXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCBzeW1ib2wgUGFnZTo6bWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnNBc1RleHQoKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXI6CisKIDIwMTItMTItMTAgIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBDaGFuZ2UgdGhlIG1pbmltdW0gcmVxdWlyZWQgRUZMIHZl
cnNpb24gdG8gMS42Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178840</attachid>
            <date>2012-12-11 11:16:37 -0800</date>
            <delta_ts>2012-12-11 17:20:49 -0800</delta_ts>
            <desc>Update test to cover issue of a previous patch</desc>
            <filename>bug-102543-20121211191359.patch</filename>
            <type>text/plain</type>
            <size>27481</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiMDgxOTExNzQ3NDU5
NDBhYjk3NTVjOTM0OTYzNTJiMWRlMjJjMi4uNjBmNzcyZjJiMDk2MjJlMjJjYjk2NDI2NmI5NTI4
YTM2NmZjYWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEyLTEwICBYaW5h
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIENoZWNr
IHJlYXNvbiB0aGF0IGEgZml4ZWQgcG9zaXRpb24gbGF5ZXIgaXMgbm90IGNvbXBvc2l0ZWQgaW4g
dGhlIGZvbGxvd2luZyBwbGFjZXM6CisgICAgICAgIDEpIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoKSwgZG9uJ3QgbGV0IGZpeGVkIHBv
c2l0aW9uIGxheWVyIG5vdCBjb21wb3NpdGVkIHdpdGggZXhwbGljaXQgcmVhc29ucyBjYXVzZSBz
bG93IHNjcm9sbGluZy4KKyAgICAgICAgMikgaW4gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoKTog
dG8gYXZvaWQgcHJlLXBhaW50aW5nIHRoZSBvdXQtb2YtdmlldyBmaXhlZC1wb3NpdGlvbmVkIGxh
eWVycy4KKworICAgICAgICBBZGRlZCB3aW5kb3cuaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KCkgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRP
YmplY3RzKTogRXhjbHVkZSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBub3QgY29t
cG9zaXRlZCBmb3IgZXhwbGljaXQgcmVhc29ucy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6IEV4dHJhY3Rl
ZCBmcm9tIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMgZm9yIGxh
eW91dCB0ZXN0cy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
b3BlcnRpZXMpOiBNb3ZlZCBjb2RlIGZvciBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyB0byBT
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKTogRG9uJ3Qg
cGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQgZWxlbWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKTogTWFuYWdlcyBtX2ZpeGVk
UG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzVG9CZUNvbXBvc2l0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nRm9yUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Zml4ZWRQb3Np
dGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbik6IE5vdyBvdXRwdXRzIGZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRyZWFzb24uCisgICAgICAgIChSZW5kZXJMYXllckNvbXBvc2l0b3Ip
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6CisKIDIwMTItMTItMTAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYjZhOTU3ZmUwYjdiYWEy
MTMyZDk0MDZkZDlkZTQ2N2IzMjAyODRiLi5mNjJlNjA0YzA3OTg1NjI0ZDMzNjFjODQyZmIzNmJm
Y2NkMmE1MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMTAgIFhpYW56
aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3QoKSBzaG91bGQgZXhj
bHVkZSBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTQzCisKKyAgICAgICAgRXhwb3J0
IHN5bWJvbCBQYWdlOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpLgorCisgICAg
ICAgICogd2luL1dlYktpdDIuZGVmLmluOgorCiAyMDEyLTEyLTEwICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdLUGFnZVNldEludmFsaWRNZXNz
YWdlRnVuY3Rpb24gc3R1YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAzZmViNWI0ZDAyYzdmOWZl
OGE1NGQ4MTE5ZjNiZGU5ZjYwOTY0NWMwLi41ZGJiMzUxZTliMjgzYTBkNzI2NWU0ZWZiOTVkNGU5
MmQ0NzljODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzY1LDYgKzc2NSw3IEBAIF9fWk43
V2ViQ29yZTRQYWdlMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdgogX19aTjdXZWJDb3JlNFBh
Z2UyNXN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1
c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3Rv
bUhUTUxUb2tlbml6ZXJUaW1lRGVsYXlFZAorX19aTjdXZWJDb3JlNFBhZ2UzMm1haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMzJzZXRNZW1vcnlDYWNo
ZUNsaWVudENhbGxzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU0UGFnZTM1cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UzNnNldFNob3VsZFN1cHBy
ZXNzU2Nyb2xsYmFyQW5pbWF0aW9uc0ViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAxNTJkYWY4ZGEz
ODkwNTg4YzBlMjU1MjIxYmJkZDQ3NWNkZGNjMmZkLi42NzA3ODIzMzYyZGEzZDJjNmZlYWY5ZDFm
OTZiY2QzYmVhMDcxZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI1NCw2ICsyNTQsMTcgQEAg
U3RyaW5nIFBhZ2U6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCitTdHJpbmcgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQo
KQoreworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgaWYgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+bWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwog
c3RydWN0IFZpZXdNb2RlSW5mbyB7CiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBQYWdlOjpW
aWV3TW9kZSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0NDNhYjI2MGIxOTRiMzc1ZWJlZWVmY2Rh
NzRjMGI2NGZhMzZiMDBjLi42YzM5NTUwZmFlMDVhYmNjNDQ2MzI0NTY4NWMwMGYyNWRlODBkNDc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtMTk2LDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAK
ICAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworICAgICAgICBTdHJp
bmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKIAogICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgICAg
IFByb2dyZXNzVHJhY2tlciogcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggY2Q5NDMyYzJhODJkOGUwMTgwMDc0N2M0YjJmZDA4NzRl
MDllYjI2Mi4uOTQzYjNlYzdkYWVjY2E1YWVhZmVjZTVhZTE4NjY2N2M2M2YyMzQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtMzQzLDggKzM0Myw5IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhh
c1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAgICAg
ICAgIFJlbmRlck9iamVjdCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsKICAgICAg
ICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkgfHwg
IXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWlu
ZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdCk7Ci0gICAgICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVsT2Jq
ZWN0LT5sYXllcigpLT5iYWNraW5nKCkpCisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRv
UmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxheWVyKCk7
CisgICAgICAgIC8vIEFueSBleHBsaWNpdCByZWFzb24gdGhhdCBhIGZpeGVkIHBvc2l0aW9uIGVs
ZW1lbnQgaXMgbm90IGNvbXBvc2l0ZWQgc2hvdWxkbid0IGNhdXNlIHNsb3cgc2Nyb2xsaW5nLgor
ICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBsYXllci0+Y29tcG9zaXRvcigp
LT5maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKGxheWVyKSA9PSBSZW5kZXJM
YXllckNvbXBvc2l0b3I6Ok5vUmVhc29uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM5OCw0ICszOTksMjkgQEAgU3RyaW5nIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKSBjb25zdAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29uc0FzVGV4dChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyByZWFzb25z
KQoreworICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKKworICAgIGlmIChyZWFzb25z
ICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkZvcmNlZE9uTWFpblRocmVhZCkKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIkZvcmNlZCBvbiBtYWluIHRocmVhZCwgIik7CisgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQorICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiKTsK
KyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJIYXMgdmlld3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0
IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiKTsKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIik7CisgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQorICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSXMgaW1hZ2UgZG9jdW1lbnQsICIpOworCisgICAgaWYgKHN0
cmluZ0J1aWxkZXIubGVuZ3RoKCkpCisgICAgICAgIHN0cmluZ0J1aWxkZXIucmVzaXplKHN0cmlu
Z0J1aWxkZXIubGVuZ3RoKCkgLSAyKTsKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpOworfQorCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnNBc1RleHQobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGMyZjFmYTg2NTBlYWI0MDI1ZGUzZGJkOTI2
ZDBjNmY5ODUyMzUxZjIuLmYyNTEwY2NhNTEyN2JlMGZhODJjODk1Y2VmNzg5YThiNGU4ZTQ4MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaApAQCAtMTUwLDYgKzE1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllcios
IGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxh
eWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KIAorICAgIHN0YXRpYyBTdHJpbmcgbWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMpOwor
ICAgIFN0cmluZyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0OworCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA1ZDM3YmUyZjUzM2FlNmFmZTM1OTQ3MzliNmU4
NmQ3YzU1OGQzMzIzLi4xYWQ1ZmEyOGM2NzJkZTFiMDQ4YzgzOTg1ZGUzNjNhYTY4ODM2NGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTIyNywxOCArMjI3LDcgQEAgdm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBp
bnQgaW5kZW50KSBjb24KIAogICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpIHsKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwot
ICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiOwotICAg
ICAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkZvcmNlZE9uTWFpblRocmVhZCkKLSAgICAgICAgICAgIHRz
IDw8ICJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
SGFzU2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICAgICAgdHMgPDwgIkhhcyBzbG93IHJlcGFp
bnQgb2JqZWN0cywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCi0gICAgICAgICAgICB0
cyA8PCAiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5n
IGZpeGVkIGxheWVycywgIjsKLSAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZp
eGVkT2JqZWN0cykKLSAgICAgICAgICAgIHRzIDw8ICJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVj
dHMsICI7Ci0gICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQotICAgICAg
ICAgICAgdHMgPDwgIklzIGltYWdlIGRvY3VtZW50IjsKLSAgICAgICAgdHMgPDwgIilcbiI7Cisg
ICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICIgPDwgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgPDwgIilcbiI7CiAgICAg
fQogCiAgICAgaWYgKG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gIT0gSW50UG9pbnQoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMmM5ZTUwZGMxNGNl
ZjFlNTI0ZTRlZmZlNTdhNDgxMDZhMDFkMWU0Ny4uZTE3NjlmMGE5NjkxMWIxNmIyZjIyYTQzOTZl
NGU5YmI2YWU1MmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zMTQ2LDYgKzMxNDYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJgogICAgICAgICAg
ICAgLy8gSWYgdGhpcyBSZW5kZXJMYXllciBzaG91bGQgcGFpbnQgaW50byBpdHMgYmFja2luZywg
dGhhdCB3aWxsIGJlIGRvbmUgdmlhIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIo
KS4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoY29tcG9z
aXRvcigpLT5maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKHRoaXMpID09IFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6TGF5ZXJCb3VuZHNPdXRPZlZpZXcpIHsKKyAgICAgICAgLy8g
RG9uJ3QgcGFpbnQgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gbGF5ZXJzICh3aGVuIGRvaW5n
IHByZXBhaW50aW5nKSBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciBiZSB2aXNpYmxlCisgICAgICAg
IC8vIHVubGVzcyB0aGVpciBwb3NpdGlvbiBvciB2aWV3cG9ydCBzaXplIGlzIGNoYW5nZWQuCisg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAzN2JiNjUxODYxY2I0YTEy
YWI5NjMwNGVkZmQxOTlkYjViMzkyOWMzLi45YTliZTJlZjM4MDU3YWRjYWY4NDY4YTg4ZDI2Zjdk
MGJjNDQyNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtNDUzLDYgKzQ1Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBk
YXRlCiAgICAgICAgIENvbXBvc2l0aW5nU3RhdGUgY29tcFN0YXRlKHVwZGF0ZVJvb3QsIG1fY29t
cG9zaXRpbmdDb25zdWx0c092ZXJsYXApOwogICAgICAgICBib29sIGxheWVyc0NoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgYm9vbCBzYXczRFRyYW5zZm9ybSA9IGZhbHNlOworICAgICAgICBtX2Zp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuY2xlYXIoKTsKICAgICAgICAg
aWYgKG1fY29tcG9zaXRpbmdDb25zdWx0c092ZXJsYXApIHsKICAgICAgICAgICAgIE92ZXJsYXBN
YXAgb3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOwogICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5n
UmVxdWlyZW1lbnRzKDAsIHVwZGF0ZVJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RNYXAsIGNvbXBT
dGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgc2F3M0RUcmFuc2Zvcm0pOwpAQCAtODQzLDcgKzg0NCw4IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVu
dHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgQ29tcG9zaXRpbmdTdGF0ZSBjaGlsZFN0YXRl
KGNvbXBvc2l0aW5nU3RhdGUpOwogICAgIGNoaWxkU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGlu
ZyA9IGZhbHNlOwogCi0gICAgYm9vbCB3aWxsQmVDb21wb3NpdGVkID0gbmVlZHNUb0JlQ29tcG9z
aXRlZChsYXllcik7CisgICAgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiBm
aXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uID0gTm9SZWFzb247CisgICAgYm9v
bCB3aWxsQmVDb21wb3NpdGVkID0gbmVlZHNUb0JlQ29tcG9zaXRlZChsYXllciwgJmZpeGVkUG9z
aXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pOwogICAgIGlmICh3aWxsQmVDb21wb3NpdGVk
KSB7CiAgICAgICAgIC8vIFRlbGwgdGhlIHBhcmVudCBpdCBoYXMgY29tcG9zaXRpbmcgZGVzY2Vu
ZGFudHMuCiAgICAgICAgIGNvbXBvc2l0aW5nU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyA9
IHRydWU7CkBAIC04NTIsNyArODU0LDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNv
bXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKIAogICAg
ICAgICBpZiAob3ZlcmxhcE1hcCkKICAgICAgICAgICAgIG92ZXJsYXBNYXAtPnB1c2hDb21wb3Np
dGluZ0NvbnRhaW5lcigpOwotICAgIH0KKyAgICB9IGVsc2UgaWYgKGZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb24gIT0gTm9SZWFzb24pCisgICAgICAgIG1fZml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC5zZXQobGF5ZXIsIGZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb24pOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVy
TGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKQEAgLTE1NTUsMTgg
KzE1NTgsMTggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3VsZFByb3BhZ2F0ZUNv
bXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVl
ZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIEZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRSZWFzb24qIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRS
ZWFzb24pIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGxh
eWVyKSB8fCBsYXllci0+bXVzdENvbXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpIHx8IChpbkNv
bXBvc2l0aW5nTW9kZSgpICYmIGxheWVyLT5pc1Jvb3RMYXllcigpKTsKKyAgICByZXR1cm4gcmVx
dWlyZXNDb21wb3NpdGluZ0xheWVyKGxheWVyLCBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3Np
dGVkUmVhc29uKSB8fCBsYXllci0+bXVzdENvbXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpIHx8
IChpbkNvbXBvc2l0aW5nTW9kZSgpICYmIGxheWVyLT5pc1Jvb3RMYXllcigpKTsKIH0KIAogLy8g
Tm90ZTogdGhpcyBzcGVjaWZpZXMgd2hldGhlciB0aGUgUkwgbmVlZHMgYSBjb21wb3NpdGluZyBs
YXllciBmb3IgaW50cmluc2ljIHJlYXNvbnMuCiAvLyBVc2UgbmVlZHNUb0JlQ29tcG9zaXRlZCgp
IHRvIGRldGVybWluZSBpZiBhIFJMIGFjdHVhbGx5IG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIu
CiAvLyBzdGF0aWMKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciog
bGF5ZXIsIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24qIGZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0
ZSBvZiBhIHJlZmxlY3Rpb24gc2hvdWxkIG1hdGNoIHRoYXQgb2YgaXRzIHJlZmxlY3RlZCBsYXll
ci4KQEAgLTE1ODQsNyArMTU4Nyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1
aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjCiAgICAgICAg
IHx8IGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhsYXllcikKICAgICAgICAgfHwgcmVxdWly
ZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXND
b21wb3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIpCisgICAgICAgIHx8IHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5v
dENvbXBvc2l0ZWRSZWFzb24pCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVy
Zmxvd1Njcm9sbGluZyhsYXllcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckJs
ZW5kaW5nKHJlbmRlcmVyKTsKIH0KQEAgLTE5NjIsNyArMTk2NSw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVuZGVyT2JqZWN0
KiByZW5kZXJlCiAjZW5kaWYKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IFJlbmRlckxheWVyKiBsYXllciwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNv
biogZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKIHsKICAgICAv
LyBwb3NpdGlvbjpmaXhlZCBlbGVtZW50cyB0aGF0IGNyZWF0ZSB0aGVpciBvd24gc3RhY2tpbmcg
Y29udGV4dCAoZS5nLiBoYXZlIGFuIGV4cGxpY2l0IHotaW5kZXgsCiAgICAgLy8gb3BhY2l0eSwg
dHJhbnNmb3JtKSBjYW4gZ2V0IHRoZWlyIG93biBjb21wb3NpdGVkIGxheWVyLiBBIHN0YWNraW5n
IGNvbnRleHQgaXMgcmVxdWlyZWQgb3RoZXJ3aXNlCkBAIC0xOTgzLDE1ICsxOTg2LDIxIEBAIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24o
UmVuZGVyT2JqZWN0KiByZW5kZXJlCiAKICAgICAvLyBEb24ndCBwcm9tb3RlIGZpeGVkIHBvc2l0
aW9uIGVsZW1lbnRzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIHRyYW5zZm9ybWVkIGVsZW1lbnRz
LgogICAgIC8vIFRoZXkgd2lsbCBzdGF5IGZpeGVkIHdydCB0aGUgdHJhbnNmb3JtZWQgZWxlbWVu
dCByYXRoZXIgdGhhbiB0aGUgZW5jbG9zaW5nIGZyYW1lLgotICAgIGlmIChjb250YWluZXIgIT0g
bV9yZW5kZXJWaWV3KQorICAgIGlmIChjb250YWluZXIgIT0gbV9yZW5kZXJWaWV3KSB7CisgICAg
ICAgIGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQorICAgICAgICAg
ICAgKmZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gPSBEZXNjZW5kYW50T2ZU
cmFuc2Zvcm1lZEVsZW1lbnQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICAv
LyBGaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBpbnZpc2libGUgaW4gdGhlIGN1cnJl
bnQgdmlldyBkb24ndCBnZXQgdGhlaXIgb3duIGxheWVyLgogICAgIGlmIChGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50UmVjdCB2
aWV3Qm91bmRzID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICAgICAgSW50
UmVjdCBsYXllckJvdW5kcyA9IGNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobGF5ZXIsIHJvb3RS
ZW5kZXJMYXllcigpKTsKLSAgICAgICAgaWYgKCF2aWV3Qm91bmRzLmludGVyc2VjdHMobGF5ZXJC
b3VuZHMpKQorICAgICAgICBpZiAoIXZpZXdCb3VuZHMuaW50ZXJzZWN0cyhsYXllckJvdW5kcykp
IHsKKyAgICAgICAgICAgIGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
KQorICAgICAgICAgICAgICAgICpmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
ID0gTGF5ZXJCb3VuZHNPdXRPZlZpZXc7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCAyNDk2OWRmODUyYzk1MjcxNGNk
ZTkzZGE2ZmZhYTFmZGY5NDlmODkzLi43N2QyZmVkN2Y0ZjYwYWIyZDI3NmFiMWYwNDg3NDYzMjc0
OTcwOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclVwZGF0
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFj
a2luZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMjI5LDYgKzIzMCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIGVudW0gRml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbiB7CisgICAgICAgIE5vUmVhc29uLAorICAgICAgICBMYXll
ckJvdW5kc091dE9mVmlldywKKyAgICAgICAgRGVzY2VuZGFudE9mVHJhbnNmb3JtZWRFbGVtZW50
LAorICAgIH07CisKKyAgICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIGZp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24oY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFz
b25NYXAuZ2V0KGxheWVyKTsgfQorCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAK
QEAgLTI0Myw5ICsyNTIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVy
cyhHcmFwaGljc0xheWVyVXBkYXRlciopIE9WRVJSSURFOwogICAgIAogICAgIC8vIFdoZXRoZXIg
dGhlIGdpdmVuIFJMIG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIuCi0gICAgYm9vbCBuZWVkc1Rv
QmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1Rv
QmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKICAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBoYXMg
YW4gaW50cmluc2ljIG5lZWQgZm9yIGNvbXBvc2l0aW5nIGxheWVyLgotICAgIGJvb2wgcmVxdWly
ZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCBy
ZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqLCBGaXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0OwogICAgIC8vIFdoZXRoZXIgdGhl
IGxheWVyIGNvdWxkIGV2ZXIgYmUgY29tcG9zaXRlZC4KICAgICBib29sIGNhbkJlQ29tcG9zaXRl
ZChjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwogCkBAIC0zMTAsNyArMzE5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKFJlbmRlck9iamVjdCop
IGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckJsZW5kaW5nKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNj
cm9sbGFibGVGcmFtZSgpIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBv
c2l0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9v
bCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyTGF5ZXIqLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNv
bnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNv
bnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9y
SW5kaXJlY3RSZWFzb24oUmVuZGVyT2JqZWN0KiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFu
dHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJl
Y3RDb21wb3NpdGluZ1JlYXNvbiYpIGNvbnN0OwogCkBAIC0zOTEsNiArNDAwLDkgQEAgcHJpdmF0
ZToKICAgICBkb3VibGUgbV9vYmxpZ2F0b3J5QmFja2luZ1N0b3JlQnl0ZXM7CiAgICAgZG91Ymxl
IG1fc2Vjb25kYXJ5QmFja2luZ1N0b3JlQnl0ZXM7CiAjZW5kaWYKKworICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBSZW5kZXJMYXllciosIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRS
ZWFzb24+IEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7CisgICAgRml4
ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcCBtX2ZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBmZjgyODlhZWE3NGM2MjdiN2ZhZmNlMzIwMjgxNDE5ZTk5MmY4MDM4Li5i
MTJhZDk0YTBlYzI1MmFjZGU1NTFhYmZiNjg0ZGRhODVlMWY4N2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDYwLDYgKzE0NjAsMjAgQEAgU3RyaW5nIEludGVybmFs
czo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9u
Q29kZSYgZWMKICAgICByZXR1cm4gcGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiB9
CiAKK1N0cmluZyBJbnRlcm5hbHM6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBwYWdlLT5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgp
OworfQorCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhE
b2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICgh
ZG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDViYzI2ODU2ODFj
ODBkMWJmOWE2MDZjY2QyYmU3NmU0ZWFhNzVkNTAuLmIxMjFkOWY3YWUxZDlmZmNkNjNjNDFkNDQ3
MTBjNmU3MTI2M2EwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA4LDYg
KzIwOCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50
KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICBTdHJpbmcgbWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNkZDNlMzg0ZjgwYjA5
YzBmZTlkMGQ3NDg5ZGUyMmI4NjNlMGY0NDkuLjE2M2U2NzY1N2U0ODhkNjE4Y2Q0ZDdkNTI4YzNh
NzcxYTg0ZTk5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE2NSw2
ICsxNjUsNyBAQAogICAgIERPTVN0cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9j
dW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9j
dW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBET01TdHJpbmcgbWFp
blRocmVhZFNjcm9sbGluZ1JlYXNvbnMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKIAogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4gRG9jdW1l
bnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmLmluCmluZGV4IGU4Y2U3ZGJiYjEzNDA0MGU2ZTUxNDFjZTFhY2Y5N2MyNzc3YTFhYjIuLjkw
YjNmMjk4NWE3MzQ3YmU2NDc0MzZjNDY0ZjQxZTcyMWNjMDEyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYuaW4KQEAgLTIyOCw2ICsyMjgsNyBAQCBFWFBPUlRTCiAgICAgICAgID9pc1ByZWxv
YWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBa
CiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0
ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBX
ZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP21haW5UaHJlYWRT
Y3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoK
ICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFB
RT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2Rl
QDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKICAgICAgICAgP25leHRTaWJsaW5n
QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0
Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggNWI3Nzc3NjdjYTYyNTc4ZWVhYWJlZjI2MWU4Y2VlNjZhNWM1NjVj
OS4uMTEwYWRjM2Y3NGM5ZWY3YzM0MjIzZjk2ODBlYzFiNzZiMDc2MmViMyAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC0zMSw2ICszMSw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxM3NldFBhZ2lu
YXRpb25FUktOU18xMFBhZ2luYXRpb25FOwogX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFnZVNjYWxl
RmFjdG9yRWZSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2Fs
ZUZhY3RvckVmOwogX1pON1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXY7
CitfWk43V2ViQ29yZTRQYWdlMzJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEV2Owog
X1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRpYUViOwogX1pON1dlYkNvcmU0dG9KU0VQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVudFJlY3RF
OwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOU18xMFNoYWRvd1Jvb3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY0NWFmYTY5YTQ0NmNkZjE3YzVmMjI0NWY0
YmI2MmFkOGEzMGU3NjYuLjM1YjJmOTExMzVjYmJhZmZhZTllNDBlNTc0ZGY0OGM4NGNiMzJmOGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0xMCAgWGlhbnpodSBXYW5nICA8d2FuZ3hp
YW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNW
aXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdCgpIHNob3VsZCBleGNsdWRlIG91dC1vZi12aWV3
IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0
aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24uaHRtbDogRW5zdXJlIHNsb3ctc2Nyb2xsaW5n
IGlzIG5vdCB0cmlnZ2VyZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNj
cm9sbGluZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2Yg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMuCisKIDIwMTItMTItMTAgIEFkYW0gS2xlaW4gIDxh
ZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFyayBhbiBlbmNyeXB0ZWQgbWVkaWEgdGVz
dCBhcyBmYWlsaW5nIGFmdGVyIGh0dHA6Ly9jcnJldi5jb20vMTcyMTc1CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQt
b2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFz
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MjdiZmI5NjNlZDlmYTVhMGYwZWJkZmFjMDAw
NWE5OGU1ZjRjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9s
YXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK01haW4gdGhyZWFkIHNjcm9sbGluZyByZWFzb25z
IHNob3VsZCBiZSBibGFuazoKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhZjVlNTg2MGM3
OTFjZjliZjMwM2I4ODdmOTIxOGVmMGExOWJmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmll
dy1zY3JvbGwtcmVhc29uLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+CisK
KzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgIC5maXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVk
OworICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKKyAgICB6LWluZGV4OiAtMTsK
KyAgfQorPC9zdHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJs
ZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKworICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cu
aW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICB9LCBm
YWxzZSk7CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgc3R5bGU9Imhl
aWdodDogMTAwMHB4Ij4KKyAgTWFpbiB0aHJlYWQgc2Nyb2xsaW5nIHJlYXNvbnMgc2hvdWxkIGJl
IGJsYW5rOgorICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+Cis8
L2Rpdj4KKworPCEtLSBvdXQgb2YgdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cyBzaG91bGQg
bm90IHRyaWdnZXIgbWFpbiB0aHJlYWQgc2Nyb2xsaW5nLiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVk
Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAtMTAwcHgiPjwvZGl2Pgor
PGRpdiBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUt
c2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGJlNDA4MGNmMWNiYWE4ZGQxY2ViMWY5
ZGIxMjI1YzhmMzExMTViODMuLjMyZWYwY2U1Y2M3NTllZmJmN2EwMjBlYzRmMWJiYjE4YmQyMGUy
YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGlu
Zy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAoU2Nyb2xsaW5nIG5vZGUKICAgKHZpZXdw
b3J0IHJlY3QgMCAwIDgwMCA2MDApCiAgIChjb250ZW50cyBzaXplIDgwMCA2MDApCi0gIChTY3Jv
bGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAp
CisgIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHNsb3cgcmVwYWludCBv
YmplY3RzKQogKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMGMx
NGYwMzNlYjdmMTNlNWI2OGEwYmI5OTdkNWYyYzA4NjU1YmFiMC4uYTEzNDc5N2YzN2ZkNTFmMWMz
NDBiNmM5MTg1MTZlOTMxZWI0ZWExYSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTEwICBYaWFuemh1IFdhbmcgIDx3YW5neGlh
bnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zp
c2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcg
Zml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV4cG9ydCBzeW1ib2wgUGFnZTo6bWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNBc1RleHQoKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXI6CisKIDIwMTItMTItMTAgIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXSBDaGFuZ2UgdGhlIG1pbmltdW0gcmVxdWlyZWQgRUZMIHZlcnNpb24g
dG8gMS42Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178928</attachid>
            <date>2012-12-11 17:20:54 -0800</date>
            <delta_ts>2012-12-11 18:21:03 -0800</delta_ts>
            <desc>Smaller patch</desc>
            <filename>bug-102543-20121212011815.patch</filename>
            <type>text/plain</type>
            <size>13950</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBkZjY1MmIyMmY5ODBh
Y2UwYmJjY2Q4ODJiNTQ5NDEyYThhMjJiNC4uNTE3MGVkNzM0N2YxNDU2NTMzYmRhNWVlNWIzMzdm
NGQzZGJhZGU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEyLTExICBYaW5h
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIExldCBS
ZW5kZXJMYXllckNvbXBvc2l0b3IgbWFuYWdlIHRoZSByZWFzb25zIHRoYXQgZml4ZWQgcG9zaXRp
b24gZWxlbWVudHMgYXJlIG5vdCBjb21wb3NpdGVkLgorICAgICAgICBDaGVjayB0aGUgcmVhc29u
IGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVj
dHMoKSwgZG9uJ3QgbGV0IGZpeGVkIHBvc2l0aW9uIGxheWVyIG5vdCBjb21wb3NpdGVkIHdpdGgg
ZXhwbGljaXQgcmVhc29ucyBjYXVzZSBzbG93IHNjcm9sbGluZy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLmh0bWwKKwor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRG
aXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHRoYXQgYXJlIG5v
dCBjb21wb3NpdGVkIGZvciBleHBsaWNpdCByZWFzb25zLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMpOiBNYW5hZ2VzIG1fZml4
ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNUb0JlQ29tcG9zaXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmaXhlZFBv
c2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKTogTm93IG91dHB1dHMgZml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZHJlYXNvbi4KKyAgICAgICAgKFJlbmRlckxheWVyQ29tcG9zaXRv
cik6CisKIDIwMTItMTItMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgLXdlYmtpdC1zdmctc2hhZG93IHJhZGl1cyBjaGFuZ2VzIGRvbid0IGNhdXNl
IGNoaWxkcmVuJ3MgYm91bmRhcmllcyB0byBiZSByZWNvbXB1dGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXgg
YmZkMjRkZjQ0MTMyNDA0N2QwMTJkMThhZTUyMGJjMDI3MDExZWYyMC4uNTBmZTE1MDAyNGJkMGU1
YzA4ODBjN2UzOWU3YmJkMDBiMzBmZDIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMzM4LDggKzMzOCw5
IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVk
T2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAgICAgICAgIFJlbmRlck9iamVjdCogdmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdCA9ICppdDsKICAgICAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkgfHwgIXZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3QtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdCA9IHRvUmVu
ZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk7Ci0gICAgICAgIGlm
ICghdmlld3BvcnRDb25zdHJhaW5lZEJveE1vZGVsT2JqZWN0LT5sYXllcigpLT5iYWNraW5nKCkp
CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdCktPmxheWVyKCk7CisgICAgICAgIC8vIEFueSBleHBsaWNp
dCByZWFzb24gdGhhdCBhIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgaXMgbm90IGNvbXBvc2l0ZWQg
c2hvdWxkbid0IGNhdXNlIHNsb3cgc2Nyb2xsaW5nLgorICAgICAgICBpZiAoIWxheWVyLT5pc0Nv
bXBvc2l0ZWQoKSAmJiBsYXllci0+Y29tcG9zaXRvcigpLT5maXhlZFBvc2l0aW9uTGF5ZXJOb3RD
b21wb3NpdGVkUmVhc29uKGxheWVyKSA9PSBSZW5kZXJMYXllckNvbXBvc2l0b3I6Ok5vUmVhc29u
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
aW5kZXggMzdiYjY1MTg2MWNiNGExMmFiOTYzMDRlZGZkMTk5ZGI1YjM5MjljMy4uOWE5YmUyZWYz
ODA1N2FkY2FmODQ2OGE4OGQyNmY3ZDBiYzQ0MjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTQ1Myw2ICs0NTMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29t
cG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogICAgICAgICBDb21wb3NpdGluZ1N0YXRlIGNvbXBT
dGF0ZSh1cGRhdGVSb290LCBtX2NvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFwKTsKICAgICAgICAg
Ym9vbCBsYXllcnNDaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgc2F3M0RUcmFuc2Zvcm0g
PSBmYWxzZTsKKyAgICAgICAgbV9maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
TWFwLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX2NvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFwKSB7
CiAgICAgICAgICAgICBPdmVybGFwTWFwIG92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAgICAgICAg
ICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygwLCB1cGRhdGVSb290LCAmb3Zlcmxh
cFRlc3RSZXF1ZXN0TWFwLCBjb21wU3RhdGUsIGxheWVyc0NoYW5nZWQsIHNhdzNEVHJhbnNmb3Jt
KTsKQEAgLTg0Myw3ICs4NDQsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0
ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3RvcgogICAgIENvbXBv
c2l0aW5nU3RhdGUgY2hpbGRTdGF0ZShjb21wb3NpdGluZ1N0YXRlKTsKICAgICBjaGlsZFN0YXRl
Lm1fc3VidHJlZUlzQ29tcG9zaXRpbmcgPSBmYWxzZTsKIAotICAgIGJvb2wgd2lsbEJlQ29tcG9z
aXRlZCA9IG5lZWRzVG9CZUNvbXBvc2l0ZWQobGF5ZXIpOworICAgIEZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb24gZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNv
biA9IE5vUmVhc29uOworICAgIGJvb2wgd2lsbEJlQ29tcG9zaXRlZCA9IG5lZWRzVG9CZUNvbXBv
c2l0ZWQobGF5ZXIsICZmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKTsKICAg
ICBpZiAod2lsbEJlQ29tcG9zaXRlZCkgewogICAgICAgICAvLyBUZWxsIHRoZSBwYXJlbnQgaXQg
aGFzIGNvbXBvc2l0aW5nIGRlc2NlbmRhbnRzLgogICAgICAgICBjb21wb3NpdGluZ1N0YXRlLm1f
c3VidHJlZUlzQ29tcG9zaXRpbmcgPSB0cnVlOwpAQCAtODUyLDcgKzg1NCw4IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVy
TGF5ZXIqIGFuY2VzdG9yCiAKICAgICAgICAgaWYgKG92ZXJsYXBNYXApCiAgICAgICAgICAgICBv
dmVybGFwTWFwLT5wdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKTsKLSAgICB9CisgICAgfSBlbHNl
IGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uICE9IE5vUmVhc29uKQor
ICAgICAgICBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuc2V0KGxh
eWVyLCBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKTsKIAogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tl
cihsYXllcik7CkBAIC0xNTU1LDE4ICsxNTU4LDE4IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpzaG91bGRQcm9wYWdhdGVDb21wb3NpdGluZ1RvRW5jbG9zaW5nRnJhbWUoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRz
VG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzVG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIq
IGxheWVyLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiBmaXhlZFBvc2l0
aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAogewogICAgIGlmICghY2FuQmVDb21w
b3NpdGVkKGxheWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcihsYXllcikgfHwgbGF5ZXItPm11c3RDb21wb3NpdGVGb3JJbmRp
cmVjdFJlYXNvbnMoKSB8fCAoaW5Db21wb3NpdGluZ01vZGUoKSAmJiBsYXllci0+aXNSb290TGF5
ZXIoKSk7CisgICAgcmV0dXJuIHJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihsYXllciwgZml4ZWRQ
b3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikgfHwgbGF5ZXItPm11c3RDb21wb3NpdGVG
b3JJbmRpcmVjdFJlYXNvbnMoKSB8fCAoaW5Db21wb3NpdGluZ01vZGUoKSAmJiBsYXllci0+aXNS
b290TGF5ZXIoKSk7CiB9CiAKIC8vIE5vdGU6IHRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIFJM
IG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIgZm9yIGludHJpbnNpYyByZWFzb25zLgogLy8gVXNl
IG5lZWRzVG9CZUNvbXBvc2l0ZWQoKSB0byBkZXRlcm1pbmUgaWYgYSBSTCBhY3R1YWxseSBuZWVk
cyBhIGNvbXBvc2l0aW5nIGxheWVyLgogLy8gc3RhdGljCi1ib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikg
Y29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5
ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3Np
dGVkUmVhc29uKiBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAog
ewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKICAgICAv
LyBUaGUgY29tcG9zaXRpbmcgc3RhdGUgb2YgYSByZWZsZWN0aW9uIHNob3VsZCBtYXRjaCB0aGF0
IG9mIGl0cyByZWZsZWN0ZWQgbGF5ZXIuCkBAIC0xNTg0LDcgKzE1ODcsNyBAQCBib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxh
eWVyKiBsYXllcikgYwogICAgICAgICB8fCBjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMobGF5
ZXIpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24ocmVuZGVyZXIp
CiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKHJlbmRlcmVyKQotICAg
ICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24ocmVuZGVyZXIsIGxheWVyKQor
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24ocmVuZGVyZXIsIGxheWVy
LCBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQogICAgICAgICB8fCByZXF1
aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcobGF5ZXIpCiAgICAgICAgIHx8IHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhyZW5kZXJlcik7CiB9CkBAIC0xOTYyLDcgKzE5
NjUsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
ckJsZW5kaW5nKFJlbmRlck9iamVjdCogcmVuZGVyZQogI2VuZGlmCiB9CiAKLWJvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIEZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRSZWFzb24qIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRS
ZWFzb24pIGNvbnN0CiB7CiAgICAgLy8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgdGhhdCBjcmVh
dGUgdGhlaXIgb3duIHN0YWNraW5nIGNvbnRleHQgKGUuZy4gaGF2ZSBhbiBleHBsaWNpdCB6LWlu
ZGV4LAogICAgIC8vIG9wYWNpdHksIHRyYW5zZm9ybSkgY2FuIGdldCB0aGVpciBvd24gY29tcG9z
aXRlZCBsYXllci4gQSBzdGFja2luZyBjb250ZXh0IGlzIHJlcXVpcmVkIG90aGVyd2lzZQpAQCAt
MTk4MywxNSArMTk4NiwyMSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXND
b21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogCiAgICAgLy8gRG9u
J3QgcHJvbW90ZSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBkZXNjZW5kYW50cyBv
ZiB0cmFuc2Zvcm1lZCBlbGVtZW50cy4KICAgICAvLyBUaGV5IHdpbGwgc3RheSBmaXhlZCB3cnQg
dGhlIHRyYW5zZm9ybWVkIGVsZW1lbnQgcmF0aGVyIHRoYW4gdGhlIGVuY2xvc2luZyBmcmFtZS4K
LSAgICBpZiAoY29udGFpbmVyICE9IG1fcmVuZGVyVmlldykKKyAgICBpZiAoY29udGFpbmVyICE9
IG1fcmVuZGVyVmlldykgeworICAgICAgICBpZiAoZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9z
aXRlZFJlYXNvbikKKyAgICAgICAgICAgICpmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVk
UmVhc29uID0gRGVzY2VuZGFudE9mVHJhbnNmb3JtZWRFbGVtZW50OwogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogCiAgICAgLy8gRml4ZWQgcG9zaXRpb24gZWxlbWVudHMgdGhhdCBhcmUg
aW52aXNpYmxlIGluIHRoZSBjdXJyZW50IHZpZXcgZG9uJ3QgZ2V0IHRoZWlyIG93biBsYXllci4K
ICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygp
KSB7CiAgICAgICAgIEludFJlY3Qgdmlld0JvdW5kcyA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRl
bnRSZWN0KCk7CiAgICAgICAgIEludFJlY3QgbGF5ZXJCb3VuZHMgPSBjYWxjdWxhdGVDb21wb3Np
dGVkQm91bmRzKGxheWVyLCByb290UmVuZGVyTGF5ZXIoKSk7Ci0gICAgICAgIGlmICghdmlld0Jv
dW5kcy5pbnRlcnNlY3RzKGxheWVyQm91bmRzKSkKKyAgICAgICAgaWYgKCF2aWV3Qm91bmRzLmlu
dGVyc2VjdHMobGF5ZXJCb3VuZHMpKSB7CisgICAgICAgICAgICBpZiAoZml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbikKKyAgICAgICAgICAgICAgICAqZml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbiA9IExheWVyQm91bmRzT3V0T2ZWaWV3OwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5k
ZXggMjQ5NjlkZjg1MmM5NTI3MTRjZGU5M2RhNmZmYWExZmRmOTQ5Zjg5My4uNzdkMmZlZDdmNGY2
MGFiMmQyNzZhYjFmMDQ4NzQ2MzI3NDk3MDkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIyOSw2ICsyMzAsMTQgQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyAg
ICBlbnVtIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24geworICAgICAgICBO
b1JlYXNvbiwKKyAgICAgICAgTGF5ZXJCb3VuZHNPdXRPZlZpZXcsCisgICAgICAgIERlc2NlbmRh
bnRPZlRyYW5zZm9ybWVkRWxlbWVudCwKKyAgICB9OworCisgICAgRml4ZWRQb3NpdGlvbkxheWVy
Tm90Q29tcG9zaXRlZFJlYXNvbiBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QgeyByZXR1cm4gbV9maXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uTWFwLmdldChsYXllcik7IH0KKwogcHJpdmF0ZToKICAg
ICBjbGFzcyBPdmVybGFwTWFwOwogCkBAIC0yNDMsOSArMjUyLDkgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hMYXllcnMoR3JhcGhpY3NMYXllclVwZGF0ZXIqKSBPVkVSUklERTsK
ICAgICAKICAgICAvLyBXaGV0aGVyIHRoZSBnaXZlbiBSTCBuZWVkcyBhIGNvbXBvc2l0aW5nIGxh
eWVyLgotICAgIGJvb2wgbmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIGNv
bnN0OworICAgIGJvb2wgbmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciosIEZp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7CiAgICAgLy8g
V2hldGhlciB0aGUgbGF5ZXIgaGFzIGFuIGludHJpbnNpYyBuZWVkIGZvciBjb21wb3NpdGluZyBs
YXllci4KLSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXll
ciopIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRl
ckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25z
dDsKICAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBjb3VsZCBldmVyIGJlIGNvbXBvc2l0ZWQuCiAg
ICAgYm9vbCBjYW5CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKIApAQCAt
MzEwLDcgKzMxOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9y
RmlsdGVycyhSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdDsKICAgICBib29sIHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUoKSBjb25zdDsKLSAgICBib29sIHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJM
YXllciopIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdG
b3JPdmVyZmxvd1Njcm9sbGluZyhjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwogICAgIGJvb2wg
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKFJlbmRlck9iamVjdCosIGJvb2wg
aGFzQ29tcG9zaXRlZERlc2NlbmRhbnRzLCBib29sIGhhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50
cywgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24mKSBjb25zdDsKIApAQCAt
MzkxLDYgKzQwMCw5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fb2JsaWdhdG9yeUJhY2tpbmdT
dG9yZUJ5dGVzOwogICAgIGRvdWJsZSBtX3NlY29uZGFyeUJhY2tpbmdTdG9yZUJ5dGVzOwogI2Vu
ZGlmCisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBGaXhlZFBvc2l0
aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uPiBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3Np
dGVkUmVhc29uTWFwOworICAgIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25N
YXAgbV9maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uTWFwOwogfTsKIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZTFhM2JjZjBiNTI2Y2I1ZTZiN2VlYTUxZDIyY2RjZmE5Y2EwNTcxZS4uODdjNDA5MzMw
OTAyYjIyMTBiMGE1NDdjZjZlZTNhNDE2MDU2MzdhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTEyLTExICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2Jq
ZWN0KCkgc2hvdWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJl
YXNvbi5odG1sOiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRyaWdnZXJlZC4KKyAgICAg
ICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmll
dy1zY3JvbGwtcmVhc29uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTExICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIC13ZWJraXQtc3ZnLXNoYWRvdyBy
YWRpdXMgY2hhbmdlcyBkb24ndCBjYXVzZSBjaGlsZHJlbidzIGJvdW5kYXJpZXMgdG8gYmUgcmVj
b21wdXRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRp
b24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1v
dXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTI3YmZi
OTYzZWQ5ZmE1YTBmMGViZGZhYzAwMDVhOThlNWY0Y2RmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9m
LXZpZXctc2Nyb2xsLXJlYXNvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitNYWluIHRo
cmVhZCBzY3JvbGxpbmcgcmVhc29ucyBzaG91bGQgYmUgYmxhbms6CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1v
Zi12aWV3LXNjcm9sbC1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYWY1ZTU4NjBjNzkxY2Y5YmYzMDNiODg3ZjkyMThlZjBhMTliZjI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCkBAIC0wLDAgKzEsNDAg
QEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAuZml4ZWQg
eworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDEw
cHg7CisgICAgei1pbmRleDogLTE7CisgIH0KKzwvc3R5bGU+CisKKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24odHJ1ZSk7
CisKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewor
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
IikuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cyhkb2N1bWVudCk7CisgICAgfSwgZmFsc2UpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKwor
PGJvZHk+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+CisgIE1haW4gdGhyZWFkIHNjcm9s
bGluZyByZWFzb25zIHNob3VsZCBiZSBibGFuazoKKyAgPHByZSBpZD0ibWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnMiPjwvcHJlPgorPC9kaXY+CisKKzwhLS0gb3V0IG9mIHZpZXcgZml4ZWQgcG9z
aXRpb24gZWxlbWVudHMgc2hvdWxkIG5vdCB0cmlnZ2VyIG1haW4gdGhyZWFkIHNjcm9sbGluZy4g
LS0+Cis8ZGl2IGNsYXNzPSJmaXhlZCI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJmaXhlZCIgc3R5bGU9
InRvcDogLTEwMHB4Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAwcHg7
IGxlZnQ6IDEwMDBweCI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178940</attachid>
            <date>2012-12-11 18:21:15 -0800</date>
            <delta_ts>2012-12-11 21:15:29 -0800</delta_ts>
            <desc>For landing</desc>
            <filename>bug-102543-20121212021836.patch</filename>
            <type>text/plain</type>
            <size>14039</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiYmM5ZjQzZTFjOTI4
NGEyODYxYmZjZjE2NWUxZWJhNGJlY2E5ZS4uYzEyMTc0NWU3OGIyNDE2ODBkN2ZlODI3ODFhMWYz
OTQwZjEwN2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEyLTExICBYaW5h
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hvdWxkIGV4
Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAgIExldCBS
ZW5kZXJMYXllckNvbXBvc2l0b3IgbWFuYWdlIHRoZSByZWFzb25zIHRoYXQgZml4ZWQgcG9zaXRp
b24gZWxlbWVudHMgYXJlIG5vdCBjb21wb3NpdGVkLgorICAgICAgICBDaGVjayB0aGUgcmVhc29u
IGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVj
dHMoKSwgZG9uJ3QgbGV0IGZpeGVkIHBvc2l0aW9uIGxheWVyIG5vdCBjb21wb3NpdGVkIHdpdGgg
ZXhwbGljaXQgcmVhc29ucyBjYXVzZSBzbG93IHNjcm9sbGluZy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLmh0bWwKKwor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRG
aXhlZE9iamVjdHMpOiBFeGNsdWRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHRoYXQgYXJlIG5v
dCBjb21wb3NpdGVkIGZvciBleHBsaWNpdCByZWFzb25zLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMpOiBNYW5hZ2VzIG1fZml4
ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNUb0JlQ29tcG9zaXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmaXhlZFBv
c2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKTogTm93IG91dHB1dHMgZml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZHJlYXNvbi4KKyAgICAgICAgKFJlbmRlckxheWVyQ29tcG9zaXRv
cik6CisKIDIwMTItMTItMTEgIEt5dW5nVGFlIEtpbSAgPGt0Zi5raW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW3NvdXBdIFVudXNlZCBwYXJhbWV0ZXIgaW4gUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwCmluZGV4IGJmZDI0ZGY0NDEzMjQwNDdkMDEyZDE4YWU1MjBiYzAyNzAxMWVm
MjAuLjUwZmUxNTAwMjRiZDBlNWMwODgwYzdlMzllN2JiZDAwYjMwZmQyMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKQEAgLTMzOCw4ICszMzgsOSBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNp
YmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFtZVZpZQogICAgICAgICBS
ZW5kZXJPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgPSAqaXQ7CiAgICAgICAgIGlm
ICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aWV3cG9ydENvbnN0cmFpbmVkQm94
TW9kZWxPYmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3QpOwotICAgICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWluZWRCb3hNb2RlbE9iamVjdC0+
bGF5ZXIoKS0+YmFja2luZygpKQorICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOworICAg
ICAgICAvLyBBbnkgZXhwbGljaXQgcmVhc29uIHRoYXQgYSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50
IGlzIG5vdCBjb21wb3NpdGVkIHNob3VsZG4ndCBjYXVzZSBzbG93IHNjcm9sbGluZy4KKyAgICAg
ICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVkKCkgJiYgbGF5ZXItPmNvbXBvc2l0b3IoKS0+Zml4
ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbihsYXllcikgPT0gUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpOb1JlYXNvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDZlZmQ1ZDUxZTNkZWQ3MjBjYTkyMzg1OGUxYWEwZDRk
YTMxNjg2YjIuLjEwMmIyMzBmMmMwNjJkNTkxNWU1NjM0NjhjOWE1ZGNlMDhjOWM3Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CkBAIC00NTMsNiArNDUzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUKICAgICAgICAgQ29t
cG9zaXRpbmdTdGF0ZSBjb21wU3RhdGUodXBkYXRlUm9vdCwgbV9jb21wb3NpdGluZ0NvbnN1bHRz
T3ZlcmxhcCk7CiAgICAgICAgIGJvb2wgbGF5ZXJzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBi
b29sIHNhdzNEVHJhbnNmb3JtID0gZmFsc2U7CisgICAgICAgIG1fZml4ZWRQb3NpdGlvbkxheWVy
Tm90Q29tcG9zaXRlZFJlYXNvbk1hcC5jbGVhcigpOwogICAgICAgICBpZiAobV9jb21wb3NpdGlu
Z0NvbnN1bHRzT3ZlcmxhcCkgewogICAgICAgICAgICAgT3ZlcmxhcE1hcCBvdmVybGFwVGVzdFJl
cXVlc3RNYXA7CiAgICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoMCwg
dXBkYXRlUm9vdCwgJm92ZXJsYXBUZXN0UmVxdWVzdE1hcCwgY29tcFN0YXRlLCBsYXllcnNDaGFu
Z2VkLCBzYXczRFRyYW5zZm9ybSk7CkBAIC04NDMsNyArODQ0LDggQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciog
YW5jZXN0b3IKICAgICBDb21wb3NpdGluZ1N0YXRlIGNoaWxkU3RhdGUoY29tcG9zaXRpbmdTdGF0
ZSk7CiAgICAgY2hpbGRTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nID0gZmFsc2U7CiAKLSAg
ICBib29sIHdpbGxCZUNvbXBvc2l0ZWQgPSBuZWVkc1RvQmVDb21wb3NpdGVkKGxheWVyKTsKKyAg
ICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIGZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb24gPSBOb1JlYXNvbjsKKyAgICBib29sIHdpbGxCZUNvbXBvc2l0
ZWQgPSBuZWVkc1RvQmVDb21wb3NpdGVkKGxheWVyLCAmZml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbik7CiAgICAgaWYgKHdpbGxCZUNvbXBvc2l0ZWQpIHsKICAgICAgICAgLy8g
VGVsbCB0aGUgcGFyZW50IGl0IGhhcyBjb21wb3NpdGluZyBkZXNjZW5kYW50cy4KICAgICAgICAg
Y29tcG9zaXRpbmdTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nID0gdHJ1ZTsKQEAgLTg1Miw3
ICs4NTQsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5n
UmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3RvcgogCiAgICAgICAgIGlmIChvdmVybGFw
TWFwKQogICAgICAgICAgICAgb3ZlcmxhcE1hcC0+cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCk7
Ci0gICAgfQorICAgIH0gZWxzZSBpZiAoZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJl
YXNvbiAhPSBOb1JlYXNvbikKKyAgICAgICAgbV9maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3Np
dGVkUmVhc29uTWFwLnNldChsYXllciwgZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJl
YXNvbik7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRl
Y3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwpAQCAtMTU1NSwxOCArMTU1OCwxOCBAQCBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xv
c2luZ0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpuZWVkc1RvQmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiBsYXll
cikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpuZWVkc1RvQmVDb21wb3NpdGVk
KGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRl
ZFJlYXNvbiogZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKIHsK
ICAgICBpZiAoIWNhbkJlQ29tcG9zaXRlZChsYXllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiByZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIpIHx8IGxheWVyLT5t
dXN0Q29tcG9zaXRlRm9ySW5kaXJlY3RSZWFzb25zKCkgfHwgKGluQ29tcG9zaXRpbmdNb2RlKCkg
JiYgbGF5ZXItPmlzUm9vdExheWVyKCkpOworICAgIHJldHVybiByZXF1aXJlc0NvbXBvc2l0aW5n
TGF5ZXIobGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pIHx8IGxh
eWVyLT5tdXN0Q29tcG9zaXRlRm9ySW5kaXJlY3RSZWFzb25zKCkgfHwgKGluQ29tcG9zaXRpbmdN
b2RlKCkgJiYgbGF5ZXItPmlzUm9vdExheWVyKCkpOwogfQogCiAvLyBOb3RlOiB0aGlzIHNwZWNp
ZmllcyB3aGV0aGVyIHRoZSBSTCBuZWVkcyBhIGNvbXBvc2l0aW5nIGxheWVyIGZvciBpbnRyaW5z
aWMgcmVhc29ucy4KIC8vIFVzZSBuZWVkc1RvQmVDb21wb3NpdGVkKCkgdG8gZGV0ZXJtaW5lIGlm
IGEgUkwgYWN0dWFsbHkgbmVlZHMgYSBjb21wb3NpdGluZyBsYXllci4KIC8vIHN0YXRpYwotYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgRml4ZWRQb3Np
dGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9z
aXRlZFJlYXNvbikgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbGF5ZXIt
PnJlbmRlcmVyKCk7CiAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIGEgcmVmbGVjdGlv
biBzaG91bGQgbWF0Y2ggdGhhdCBvZiBpdHMgcmVmbGVjdGVkIGxheWVyLgpAQCAtMTU4NCw3ICsx
NTg3LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdM
YXllcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGMKICAgICAgICAgfHwgY2xpcHNDb21wb3Np
dGluZ0Rlc2NlbmRhbnRzKGxheWVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9y
QW5pbWF0aW9uKHJlbmRlcmVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmls
dGVycyhyZW5kZXJlcikKLSAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9u
KHJlbmRlcmVyLCBsYXllcikKKyAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0
aW9uKHJlbmRlcmVyLCBsYXllciwgZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNv
bikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGxh
eWVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcocmVuZGVyZXIp
OwogfQpAQCAtMTk2Miw3ICsxOTY1LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmUKICNlbmRp
ZgogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXll
cikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiBmaXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAogewogICAgIC8vIHBvc2l0aW9uOmZpeGVk
IGVsZW1lbnRzIHRoYXQgY3JlYXRlIHRoZWlyIG93biBzdGFja2luZyBjb250ZXh0IChlLmcuIGhh
dmUgYW4gZXhwbGljaXQgei1pbmRleCwKICAgICAvLyBvcGFjaXR5LCB0cmFuc2Zvcm0pIGNhbiBn
ZXQgdGhlaXIgb3duIGNvbXBvc2l0ZWQgbGF5ZXIuIEEgc3RhY2tpbmcgY29udGV4dCBpcyByZXF1
aXJlZCBvdGhlcndpc2UKQEAgLTE5ODMsMTYgKzE5ODYsMjIgQEAgYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJl
bmRlcmUKIAogICAgIC8vIERvbid0IHByb21vdGUgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMgdGhh
dCBhcmUgZGVzY2VuZGFudHMgb2YgdHJhbnNmb3JtZWQgZWxlbWVudHMuCiAgICAgLy8gVGhleSB3
aWxsIHN0YXkgZml4ZWQgd3J0IHRoZSB0cmFuc2Zvcm1lZCBlbGVtZW50IHJhdGhlciB0aGFuIHRo
ZSBlbmNsb3NpbmcgZnJhbWUuCi0gICAgaWYgKGNvbnRhaW5lciAhPSBtX3JlbmRlclZpZXcpCisg
ICAgaWYgKGNvbnRhaW5lciAhPSBtX3JlbmRlclZpZXcpIHsKKyAgICAgICAgaWYgKGZpeGVkUG9z
aXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pCisgICAgICAgICAgICAqZml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiA9IERlc2NlbmRhbnRPZlRyYW5zZm9ybWVkRWxlbWVu
dDsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIC8vIEZpeGVkIHBvc2l0aW9u
IGVsZW1lbnRzIHRoYXQgYXJlIGludmlzaWJsZSBpbiB0aGUgY3VycmVudCB2aWV3IGRvbid0IGdl
dCB0aGVpciBvd24gbGF5ZXIuCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9yZW5k
ZXJWaWV3LT5mcmFtZVZpZXcoKSkgewogICAgICAgICBJbnRSZWN0IHZpZXdCb3VuZHMgPSBmcmFt
ZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwogICAgICAgICBMYXlvdXRSZWN0IGxheWVyQm91
bmRzID0gY2FsY3VsYXRlQ29tcG9zaXRlZEJvdW5kcyhsYXllciwgcm9vdFJlbmRlckxheWVyKCkp
OwogICAgICAgICBsYXllckJvdW5kcy5zY2FsZShwYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgICAg
IGlmICghdmlld0JvdW5kcy5pbnRlcnNlY3RzKGVuY2xvc2luZ0ludFJlY3QobGF5ZXJCb3VuZHMp
KSkKKyAgICAgICAgaWYgKCF2aWV3Qm91bmRzLmludGVyc2VjdHMoZW5jbG9zaW5nSW50UmVjdChs
YXllckJvdW5kcykpKSB7CisgICAgICAgICAgICBpZiAoZml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbikKKyAgICAgICAgICAgICAgICAqZml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbiA9IExheWVyQm91bmRzT3V0T2ZWaWV3OwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggMjQ5Njlk
Zjg1MmM5NTI3MTRjZGU5M2RhNmZmYWExZmRmOTQ5Zjg5My4uNzdkMmZlZDdmNGY2MGFiMmQyNzZh
YjFmMDQ4NzQ2MzI3NDk3MDkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllckJhY2tpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTIyOSw2ICsyMzAsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyAgICBlbnVtIEZp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24geworICAgICAgICBOb1JlYXNvbiwK
KyAgICAgICAgTGF5ZXJCb3VuZHNPdXRPZlZpZXcsCisgICAgICAgIERlc2NlbmRhbnRPZlRyYW5z
Zm9ybWVkRWxlbWVudCwKKyAgICB9OworCisgICAgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9z
aXRlZFJlYXNvbiBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKGNvbnN0IFJl
bmRlckxheWVyKiBsYXllcikgY29uc3QgeyByZXR1cm4gbV9maXhlZFBvc2l0aW9uTGF5ZXJOb3RD
b21wb3NpdGVkUmVhc29uTWFwLmdldChsYXllcik7IH0KKwogcHJpdmF0ZToKICAgICBjbGFzcyBP
dmVybGFwTWFwOwogCkBAIC0yNDMsOSArMjUyLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hMYXllcnMoR3JhcGhpY3NMYXllclVwZGF0ZXIqKSBPVkVSUklERTsKICAgICAKICAg
ICAvLyBXaGV0aGVyIHRoZSBnaXZlbiBSTCBuZWVkcyBhIGNvbXBvc2l0aW5nIGxheWVyLgotICAg
IGJvb2wgbmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OworICAg
IGJvb2wgbmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciosIEZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7CiAgICAgLy8gV2hldGhlciB0
aGUgbGF5ZXIgaGFzIGFuIGludHJpbnNpYyBuZWVkIGZvciBjb21wb3NpdGluZyBsYXllci4KLSAg
ICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciopIGNvbnN0
OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiwg
Rml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKICAgICAv
LyBXaGV0aGVyIHRoZSBsYXllciBjb3VsZCBldmVyIGJlIGNvbXBvc2l0ZWQuCiAgICAgYm9vbCBj
YW5CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKIApAQCAtMzEwLDcgKzMx
OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhS
ZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVu
ZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdDsKICAgICBib29sIHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUoKSBjb25zdDsKLSAgICBib29sIHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJMYXllciopIGNv
bnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJl
YXNvbiogPSAwKSBjb25zdDsKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxv
d1Njcm9sbGluZyhjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXND
b21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKFJlbmRlck9iamVjdCosIGJvb2wgaGFzQ29tcG9z
aXRlZERlc2NlbmRhbnRzLCBib29sIGhhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50cywgUmVuZGVy
TGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24mKSBjb25zdDsKIApAQCAtMzkxLDYgKzQw
MCw5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fb2JsaWdhdG9yeUJhY2tpbmdTdG9yZUJ5dGVz
OwogICAgIGRvdWJsZSBtX3NlY29uZGFyeUJhY2tpbmdTdG9yZUJ5dGVzOwogI2VuZGlmCisKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBGaXhlZFBvc2l0aW9uTGF5ZXJO
b3RDb21wb3NpdGVkUmVhc29uPiBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
TWFwOworICAgIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAgbV9maXhl
ZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uTWFwOwogfTsKIAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDZl
NDY2NDJmYWI3ZDA0NTE1NThhNzA3MjQzYjUyNzBkNDQ5Yzk0ZC4uNThjMmI0MmFkNTBiM2ExNGZl
ZjUzZTMwMGM1YTZkZTJiOWExMzY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEyLTEyLTEx
ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0KCkgc2hv
dWxkIGV4Y2x1ZGUgb3V0LW9mLXZpZXcgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU0MworCisgICAgICAg
IFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1s
OiBFbnN1cmUgc2xvdy1zY3JvbGxpbmcgaXMgbm90IHRyaWdnZXJlZC4KKyAgICAgICAgKiBjb21w
b3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwt
cmVhc29uLmh0bWw6IEFkZGVkLgorCisyMDEyLTEyLTExICBYaWFuemh1IFdhbmcgIDx3YW5neGlh
bnpodUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgRml4ZWQgcG9zaXRpb24gb3V0LW9mLXZpZXcg
Y2hlY2sgaXMgaW5jb3JyZWN0IHdoZW4gcGFnZSBpcyBzY2FsZWQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDMwMwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Yt
dmlldy1zY3JvbGwtcmVhc29uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjcm9sbC1yZWFzb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MjdiZmI5NjNlZDlmYTVhMGYwZWJkZmFjMDAwNWE5
OGU1ZjRjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY3JvbGwtcmVhc29uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK01haW4gdGhyZWFkIHNjcm9sbGluZyByZWFzb25zIHNo
b3VsZCBiZSBibGFuazoKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1s
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24t
b3V0LW9mLXZpZXctc2Nyb2xsLXJlYXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhZjVlNTg2MGM3OTFj
ZjliZjMwM2I4ODdmOTIxOGVmMGExOWJmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1z
Y3JvbGwtcmVhc29uLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgIC5maXhlZCB7CisgICAgcG9zaXRpb246IGZpeGVkOwor
ICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKKyAgICB6LWluZGV4OiAtMTsKKyAg
fQorPC9zdHlsZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNv
bXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKworICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMiKS5pbm5lclRleHQgPSB3aW5kb3cuaW50
ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICB9LCBmYWxz
ZSk7CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgc3R5bGU9ImhlaWdo
dDogMTAwMHB4Ij4KKyAgTWFpbiB0aHJlYWQgc2Nyb2xsaW5nIHJlYXNvbnMgc2hvdWxkIGJlIGJs
YW5rOgorICA8cHJlIGlkPSJtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyI+PC9wcmU+Cis8L2Rp
dj4KKworPCEtLSBvdXQgb2YgdmlldyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cyBzaG91bGQgbm90
IHRyaWdnZXIgbWFpbiB0aHJlYWQgc2Nyb2xsaW5nLiAtLT4KKzxkaXYgY2xhc3M9ImZpeGVkIj48
L2Rpdj4KKzxkaXYgY2xhc3M9ImZpeGVkIiBzdHlsZT0idG9wOiAtMTAwcHgiPjwvZGl2PgorPGRp
diBjbGFzcz0iZml4ZWQiIHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogMTAwMHB4Ij48L2Rpdj4KKwor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>