<?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>45522</bug_id>
          
          <creation_ts>2010-09-09 22:02:06 -0700</creation_ts>
          <short_desc>Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.</short_desc>
          <delta_ts>2010-09-10 21:17:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>mrobinson</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277015</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-09 22:02:06 -0700</bug_when>
    <thetext>We should remove the unnecessary constraint in WebCore of having to choose between either using text zoom or full page zoom. There is no reason they can&apos;t both be used independently of each other.  That behavior should be up to the port API layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277023</commentid>
    <comment_count>1</comment_count>
      <attachid>67153</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-09 22:16:08 -0700</bug_when>
    <thetext>Created attachment 67153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277024</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-09 22:20:45 -0700</bug_when>
    <thetext>It would be really great if people from the different ports could take a look at the changes I made to the WebKit layer, and make sure that it is all up to grade.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277083</commentid>
    <comment_count>3</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-10 02:08:11 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; It would be really great if people from the different ports could take a look at the changes I made to the WebKit layer, and make sure that it is all up to grade.

In GTK+ you just changed things so that they keep working as they are now right? ie, faking that full page zoom and text zoom are still mutually exclusive. In that case it looks good, although of course we should change the APIs to take into account the new situation. Thanks for taking care of things!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277201</commentid>
    <comment_count>4</comment_count>
      <attachid>67153</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 08:23:26 -0700</bug_when>
    <thetext>Comment on attachment 67153
Patch

&gt; +    float textZoomFactor() const  { return m_textZoomFactor; }

There&apos;s an extra space here.

&gt; +        view-&gt;setPageZoomFactor(1.0f);

I suggest just &quot;1&quot; here instead of &quot;1.0f&quot;.

&gt; +        view-&gt;setTextZoomFactor(1.0f);

And here.

&gt; +    if (m_zoomsTextOnly != isTextOnly) {
&gt; +        m_zoomsTextOnly = isTextOnly;
&gt; +        m_page-&gt;setNeedsRecalcStyleInAllFrames();
&gt; +    }

WHy is this call to setNeedsRecalcStyleInAllFrames needed? The calls to setPageZoomFactor and setTextZoomFactor should handle everything. If that is not so, then we should consider optimizing the case where the multiplier is 1. I suspect at least some of the new calls you added to setNeedsRecalcStyleInAllFrames are unneeded, and I’m not sure you needed to move the function out of the Settings class at all.

&gt; +    WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()-&gt;page(), 1.0f);

Again, how about 1 instead of 1.0f?

&gt; +    WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()-&gt;page(), 1.0f);

Ditto.

And more of the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277228</commentid>
    <comment_count>5</comment_count>
      <attachid>67153</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-10 09:00:46 -0700</bug_when>
    <thetext>Comment on attachment 67153
Patch

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

&gt; WebKit/chromium/src/FrameLoaderClientImpl.cpp:1401
&gt; +    bool zoomTextOnly = m_webFrame-&gt;viewImpl();
viewImpl is of type WebViewImpl*, but you are storing it in a &apos;bool&apos;.  i think this is going to force zoomTextOnly to always be true.

i think you meant to write m_webFrame-&gt;viewImpl()-&gt;zoomTextOnly().

&gt; WebKit/chromium/src/WebViewImpl.cpp:1494
&gt; +        m_page-&gt;setNeedsRecalcStyleInAllFrames();
why isn&apos;t this a byproduct of calling set{Text,Page}ZoomFactor?  isn&apos;t unfortunate for WebKit layers to need to understand when to call setNeedsRecalcStyleInAllFrames?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277266</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 09:53:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; WebKit/chromium/src/FrameLoaderClientImpl.cpp:1401
&gt; &gt; +    bool zoomTextOnly = m_webFrame-&gt;viewImpl();
&gt; viewImpl is of type WebViewImpl*, but you are storing it in a &apos;bool&apos;.  i think this is going to force zoomTextOnly to always be true.
&gt; 
&gt; i think you meant to write m_webFrame-&gt;viewImpl()-&gt;zoomTextOnly().

Good catch! I missed that one!

&gt; &gt; WebKit/chromium/src/WebViewImpl.cpp:1494
&gt; &gt; +        m_page-&gt;setNeedsRecalcStyleInAllFrames();
&gt; why isn&apos;t this a byproduct of calling set{Text,Page}ZoomFactor?  isn&apos;t unfortunate for WebKit layers to need to understand when to call setNeedsRecalcStyleInAllFrames?

Not sure if you noticed, but I made the same comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277292</commentid>
    <comment_count>7</comment_count>
      <attachid>67153</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-10 10:50:08 -0700</bug_when>
    <thetext>Comment on attachment 67153
Patch

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

&gt; WebKit/chromium/src/WebViewImpl.cpp:1485
&gt; +        view-&gt;setPageZoomFactor(1.0f);
It seems slightly strange to me that we&apos;re removing a constraint on &quot;only use text zoom or page zoom at one time&quot; and yet this still forces the other zoom level to 1 every time one zoom level is set.  It seems like it would be better to either rely on the port to do this if it wants zooming one thing to reset the other, or make the APIs take both a text and page zoom value simultaneously (so that ports must specify what they mean, and we avoid doing two style recalcs in a row).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277296</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 10:56:11 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; It seems slightly strange to me that we&apos;re removing a constraint on &quot;only use text zoom or page zoom at one time&quot; and yet this still forces the other zoom level to 1 every time one zoom level is set. It seems like it would be better to either rely on the port to do this if it wants zooming one thing to reset the other, or make the APIs take both a text and page zoom value simultaneously (so that ports must specify what they mean, and we avoid doing two style recalcs in a row).

The code you quoted is from inside the Chromium port, and we do rely on the port to do this!

This patch preserves the WebKit API for the various ports. You suggestions point to a direction for improving Chromium’s WebKit API and could be done in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277299</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 10:56:46 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; we avoid doing two style recalcs in a row

There will only be one style recalc. The code sets a flag saying recalc is needed, and doing that twice is relatively inexpensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277412</commentid>
    <comment_count>10</comment_count>
      <attachid>67229</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-10 13:50:38 -0700</bug_when>
    <thetext>Created attachment 67229
Updated patch

Thanks for the feedback. Here is an updated patch. It turns out the call to setNeedsRecalcStyleInAllFrames was unnecessary and that we would probably end up doing a little too much work if we called both setPageZoomFactor and setTextZoomFactor in a row, so I have added a function which can change both at once if that is what is wanted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277445</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 14:46:10 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; we would probably end up doing a little too much work if we called both setPageZoomFactor and setTextZoomFactor in a row, so I have added a function which can change both at once if that is what is wanted.

Really? Are you sure?

There are other changes someone might make at the same time too, so I don’t see why we have to gang these two together. I think having a function to change both at once is not worthwhile, and poor factoring. Unless it’s measurably better for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277446</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 14:46:43 -0700</bug_when>
    <thetext>To put it another way: If setting both at once is really more efficient, then I suggest including that in WebKit2’s public API too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277499</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-10 16:02:53 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; we would probably end up doing a little too much work if we called both setPageZoomFactor and setTextZoomFactor in a row, so I have added a function which can change both at once if that is what is wanted.
&gt; 
&gt; Really? Are you sure?
&gt; 
&gt; There are other changes someone might make at the same time too, so I don’t see why we have to gang these two together. I think having a function to change both at once is not worthwhile, and poor factoring. Unless it’s measurably better for performance.

Well, both end up calling document-&gt;recalcStyle(Node::Force);, which Dan tells me can be expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277500</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-10 16:03:50 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; To put it another way: If setting both at once is really more efficient, then I suggest including that in WebKit2’s public API too.

I think for the UIProcess side, I will add something for that, for the bundle side (for the test runner) I don&apos;t see a compelling reason to optimize this at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277538</commentid>
    <comment_count>15</comment_count>
      <attachid>67229</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-10 16:47:27 -0700</bug_when>
    <thetext>Comment on attachment 67229
Updated patch

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

&gt; WebKit/chromium/src/WebViewImpl.cpp:1489
&gt; +    if (oldZoomFactor != zoomFactor &amp;&amp; textOnly != m_zoomTextOnly) {
shouldn&apos;t this be an OR?  if either the zoom factor or the textOnly flag changes, we need to notify the plugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277573</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-10 17:53:28 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 67229 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67229&amp;action=prettypatch
&gt; 
&gt; &gt; WebKit/chromium/src/WebViewImpl.cpp:1489
&gt; &gt; +    if (oldZoomFactor != zoomFactor &amp;&amp; textOnly != m_zoomTextOnly) {
&gt; shouldn&apos;t this be an OR?  if either the zoom factor or the textOnly flag changes, we need to notify the plugin.

(In reply to comment #15)
&gt; (From update of attachment 67229 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67229&amp;action=prettypatch
&gt; 
&gt; &gt; WebKit/chromium/src/WebViewImpl.cpp:1489
&gt; &gt; +    if (oldZoomFactor != zoomFactor &amp;&amp; textOnly != m_zoomTextOnly) {
&gt; shouldn&apos;t this be an OR?  if either the zoom factor or the textOnly flag changes, we need to notify the plugin.

Yeah. It should. Is the rest of the patch ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277575</commentid>
    <comment_count>17</comment_count>
      <attachid>67275</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-10 17:55:59 -0700</bug_when>
    <thetext>Created attachment 67275
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277582</commentid>
    <comment_count>18</comment_count>
      <attachid>67275</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-10 18:14:59 -0700</bug_when>
    <thetext>Comment on attachment 67275
Patch 3

&gt; +    float textZoomFactor() const  { return m_textZoomFactor; }

Extra space here after const.

Longer term you should find a way to make it efficient to set both zoom factors separately, presumably by making sure the style recalculation is deferred, and eliminate the function to do both at once.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277629</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-10 21:08:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67274 might have broken Qt Linux Release minimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277630</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-10 21:17:18 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/67274.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67153</attachid>
            <date>2010-09-09 22:16:08 -0700</date>
            <delta_ts>2010-09-10 13:50:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>zoomy.diff</filename>
            <type>text/plain</type>
            <size>66766</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzE2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODAgQEAKKzIwMTAtMDktMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgY29uc3RyYWludCBpbiBXZWJDb3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0
IHpvb20gb3IgZnVsbCBwYWdlIHpvb20uCisgICAgICAgIFByZWN1cnNvciB0byA8cmRhcjovL3By
b2JsZW0vNzY2MDY1Nz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ1NTIyCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5w
cm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgWm9vbU1v
ZGUuaAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZSk6Cisg
ICAgICAgIFJlbW92ZSB1c2VzIG9mIHNob3VsZEFwcGx5VGV4dFpvb20oKSwgaXQgaGFkIHR1cm5l
ZCBpbnRvIGp1c3QgYSBjb21wYXJlIHRvIDEuMGYuCisKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3Jab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2V0U2Nyb2xsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbFRvcCk6CisgICAgICAgIENvbnZlcnQgdGhl
c2UgdG8gdXNlIHRoZSBleHBsaWNpdCBwYWdlWm9vbUZhY3RvcigpIGZ1bmN0aW9uLCBpdCBtYWRl
IG5vIHNlbnNlIGZvciB0ZXh0IHpvb20KKyAgICAgICAgYW55d2F5LgorCisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICBSZW1vdmUgaW5jbHVkZSBvZiBab29tTW9kZS5oCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRQYWdlWm9v
bUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRUZXh0Wm9vbUZhY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNldFBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2V0VGV4dFpvb21GYWN0b3IpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6dGV4dFpvb21GYWN0b3IpOgorICAgICAgICBDaGFuZ2UgRnJhbWVWaWV3
IHRvIHN0b3JlIHR3byB2YWx1ZXMgZm9yIHpvb20sIG9uZSBmb3IgcGFnZSB6b29tIGFuZCBvbmUg
Zm9yIHRleHQgem9vbS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMpOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRT
dGFuZGFyZEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEZpeGVk
Rm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0U2VyaWZGb250RmFt
aWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRDdXJzaXZlRm9udEZhbWlseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RmFudGFzeUZvbnRGYW1pbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldE1pbmltdW1Gb250U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpzZXREZWZhdWx0Rml4ZWRGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0Rm9udFJlbmRlcmluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRTaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoK
KyAgICAgICAgTW92ZWQgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzIHRvIFBhZ2Ugc28g
Y2hhbmdlZCBjYWxsZXJzLiBBbHNvIHJlbW92ZWQgc2V0Wm9vbU1vZGUuCisKKyAgICAgICAgKiBw
YWdlL1pvb21Nb2RlLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp6b29tRmFjdG9yKToKKyAgICAg
ICAgUmVtb3ZlIG5vdyB1bm5lY2Vzc2FyeSBjYWxsIHRvIHNob3VsZEFwcGx5UGFnZVpvb20gc2lu
Y2UgaXQgd2lsbCBiZSAxIGlmIGl0IHNob3VsZAorICAgICAgICBiZSBpZ25vcmVkLgorCisgICAg
ICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgVXNlIGV4cGxpY2l0IHNldFBhZ2Vab29t
RmFjdG9yIGZ1bmN0aW9uLgorCiAyMDEwLTA5LTA5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUu
YW0JKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBj
b3B5KQpAQCAtMTg3Miw3ICsxODcyLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3Jl
L3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAJV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwK
IAlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwKLQlXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaCBc
CiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggXAogCVdlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA2NzExOSkKKysr
IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0MSw3ICszNDEsNiBA
QCBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFCiBfX1pON1dlYkNvcmUx
NUZvY3VzQ29udHJvbGxlcjEwc2V0Rm9jdXNlZEViCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJv
bGxlcjE1c2V0Rm9jdXNlZEZyYW1lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19a
TjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNXNldEluaXRpYWxGb2N1c0VOU18xNEZvY3VzRGly
ZWN0aW9uRVBOU18xM0tleWJvYXJkRXZlbnRFCi1fX1pOSzdXZWJDb3JlMTVGb2N1c0NvbnRyb2xs
ZXIxOGZvY3VzZWRPck1haW5GcmFtZUV2CiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjlz
ZXRBY3RpdmVFYgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMnNldEZpbGxDb2xvckVS
S05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDRjbGlwRVJLTlNfOUZsb2F0UmVjdEUKQEAgLTY3MiwyMCArNjcxLDE5IEBAIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE3Z2V0
Rm9jdXNhYmxlTm9kZXNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU180Tm9kZUVFRUxtMEVF
RQogX19aTjdXZWJDb3JlOERvY3VtZW50MThjcmVhdGVXcmFwcGVyQ2FjaGVFUE5TXzE1RE9NV3Jh
cHBlcldvcmxkRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTlhY2Nlc3NTVkdFeHRlbnNpb25zRXYK
K19fWk43V2ViQ29yZThEb2N1bWVudDIwc3R5bGVTZWxlY3RvckNoYW5nZWRFTlNfMjNTdHlsZVNl
bGVjdG9yVXBkYXRlRmxhZ0UKIF9fWk43V2ViQ29yZThEb2N1bWVudDIyY3JlYXRlRG9jdW1lbnRG
cmFnbWVudEV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyNGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlzdGVuZXJFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyNHNl
dFNob3VsZENyZWF0ZVJlbmRlcmVyc0ViCitfX1pON1dlYkNvcmU4RG9jdW1lbnQyNXNjaGVkdWxl
Rm9yY2VkU3R5bGVSZWNhbGNFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MjZwYWdlU2l6ZUFuZE1h
cmdpbnNJblBpeGVsc0VpUk5TXzdJbnRTaXplRVJpUzNfUzNfUzNfCiBfX1pON1dlYkNvcmU4RG9j
dW1lbnQyN3JlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlz
dGVuZXJFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQzNnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0c0V2Ci1fX1pON1dlYkNvcmU4RG9jdW1lbnQyNXNjaGVkdWxlRm9yY2VkU3R5bGVS
ZWNhbGNFdgotX19aTjdXZWJDb3JlOERvY3VtZW50MjBzdHlsZVNlbGVjdG9yQ2hhbmdlZEVOU18y
M1N0eWxlU2VsZWN0b3JVcGRhdGVGbGFnRQogX19aTjdXZWJDb3JlOERvY3VtZW50NGhlYWRFdgog
X19aTjdXZWJDb3JlOEZvcm1EYXRhNmNyZWF0ZUVQS3ZtCiBfX1pON1dlYkNvcmU4Rm9ybURhdGFE
MUV2CiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3JlOFBv
c2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVpCi1fX1pON1dlYkNvcmU4U2V0
dGluZ3MxMXNldFpvb21Nb2RlRU5TXzhab29tTW9kZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0
c2V0SmF2YUVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKQEAgLTczNyw5ICs3
MzUsOSBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMXNldFNocmlua3NTdGFuZGFsCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MzMnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczMyc2V0TmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmtFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMzNzZXREb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWRFYgot
X19aTjdXZWJDb3JlOFNldHRpbmdzMzVzZXRFbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzNHNldExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0Vu
YWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzVzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zy
b21GaWxlVVJMc0ViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MzNXNldEVuZm9yY2VDU1NNSU1FVHlw
ZUluTm9RdWlya3NNb2RlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczM1c2V0RXhwZXJpbWVudGFs
Tm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzVzZXRUcmVhdHNB
bnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzNnNldE9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZEViCkBAIC03NjEsNyArNzU5LDYgQEAgX19a
TjdXZWJDb3JlOUZyYW1lVHJlZTdzZXROYW1lRVJLTjNXVEYxMgogX19aTjdXZWJDb3JlOUZyYW1l
VHJlZTljbGVhck5hbWVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzExZm9yY2VMYXlvdXRFYgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzEyc2V0TWVkaWFUeXBlRVJLTjNXVEY2U3RyaW5nRQotX19a
TjdXZWJDb3JlOUZyYW1lVmlldzEzc2V0Wm9vbUZhY3RvckVmTlNfOFpvb21Nb2RlRQogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzE0YWRqdXN0Vmlld1NpemVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzE0c2V0TWFyZ2luV2lkdGhFaQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0TmVlZHNMYXlv
dXRFdgpAQCAtNzY5LDE1ICs3NjYsMTcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0VHJh
bnNwYXJlbnRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE1c2V0TWFyZ2luSGVpZ2h0RWkKIF9f
Wk43V2ViQ29yZTlGcmFtZVZpZXcxNmFkanVzdFBhZ2VIZWlnaHRFUGZmZmYKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcxNnNldFBhaW50QmVoYXZpb3JFagorX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3
c2V0UGFnZVpvb21GYWN0b3JFZgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VGV4dFpvb21G
YWN0b3JFZgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9f
Wk43V2ViQ29yZTlGcmFtZVZpZXcyMGVudGVyQ29tcG9zaXRpbmdNb2RlRXYKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRU5TXzVDb2xvckUKIF9fWk43V2ViQ29yZTlGcmFt
ZVZpZXcyM3VwZGF0ZUNhbkhhdmVTY3JvbGxiYXJzRXYKLV9fWk43V2ViQ29yZTlGcmFtZVZpZXcz
N3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmVFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uRVJLTlNfOUZsb2F0U2l6ZUVmTlNfNUZy
YW1lMTlBZGp1c3RWaWV3U2l6ZU9yTm90RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hv
dWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c3luY0Nv
bXBvc2l0aW5nU3RhdGVSZWN1cnNpdmVFdgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzM3dXBkYXRl
TGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzZjcmVh
dGVFUE5TXzVGcmFtZUVSS05TXzdJbnRTaXplRQpAQCAtODg5LDkgKzg4OCw5IEBAIF9fWk5LN1dl
YkNvcmUxMkV2ZW50SGFuZGxlcjIwY3VycmVudEtleWIKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRh
YmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxk
U3RvcFRocmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJs
ZWRFdgotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagogX19aTks3V2ViQ29y
ZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJP
YmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVOU18xMEZsb2F0UG9pbnRFYmIKK19fWk5LN1dlYkNvcmUx
MlJlbmRlck9iamVjdDdjaGlsZEF0RWoKIF9fWk5LN1dlYkNvcmUxMlJlbmRlcldpZGdldDE0d2lu
ZG93Q2xpcFJlY3RFdgogX19aTks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyNGRhdGFFdgogX19aTks3
V2ViQ29yZTEyU2hhcmVkQnVmZmVyNHNpemVFdgpAQCAtOTM0LDYgKzkzMyw3IEBAIF9fWk5LN1dl
YkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXgKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNl
SGFuZGxlMTBjb25uZWN0aW9uRXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTFmcmFt
ZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjVlcXVhbEVQS1MwXworX19a
Tks3V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMThmb2N1c2VkT3JNYWluRnJhbWVFdgogX19aTks3
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVwbGF0Zm9ybUNvbnRleHRFdgogX19aTks3V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MTZwYWludGluZ0Rpc2FibGVkRXYKIF9fWk5LN1dlYkNvcmUxNVBy
b2dyZXNzVHJhY2tlcjE3ZXN0aW1hdGVkUHJvZ3Jlc3NFdgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDY3MTE5
KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTIxNjAsNyArMjE2
MCw2IEBACiAgICAgICAgICAgICAncGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCcsCiAgICAgICAgICAg
ICAncGFnZS9YU1NBdWRpdG9yLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9YU1NBdWRpdG9yLmgn
LAotICAgICAgICAgICAgJ3BhZ2UvWm9vbU1vZGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bkxpc3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJv
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjgwLDcgKzE2ODAsNiBAQCBIRUFERVJTICs9IFwKICAgICBw
YWdlL1dpbmRvd0ZlYXR1cmVzLmggXAogICAgIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmggXAogICAg
IHBhZ2UvWFNTQXVkaXRvci5oIFwKLSAgICBwYWdlL1pvb21Nb2RlLmggXAogICAgIHBsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb24uaCBcCiAgICAgcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjMzMjQsMTAgKzIzMzI0LDYg
QEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVkaXRvci5oIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxab29tTW9kZS5o
Ig0KLQkJCQk+DQotCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0id2luIg0KIAkJ
CQk+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMzksNyArNTEzOSw2IEBACiAJCUNFMDJGMEM0MTFFODNB
REQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNj
cmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNFMTcy
RTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21N
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0QzAwRTMxMEY2RjdC
QTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovOyB9OwogCQlDRTRDMDBFNjEw
RjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0QzAwRTUxMEY2RjdDMTAwQ0EzOEY1IC8q
IEhUTUxOb1NjcmlwdEVsZW1lbnQuaCAqLzsgfTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4
IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNl
UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTA5NzQsNyArMTA5NzMsNiBAQAogCQlDRTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyog
U2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Uw
NTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1N0ZBNDEyMjA3MzExMDBB
NDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE5vU2Ny
aXB0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNEMwMEU1MTBG
NkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc1OSw3ICsxMjc1Nyw2IEBA
CiAJCQkJRTEyNzFBNTEwRUVFQ0QxQzAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5pZGwgKi8s
CiAJCQkJOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovLAogCQkJ
CTk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi8sCi0JCQkJQ0UxNzJF
MDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHBh
Z2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjAzNzYsNyArMjAzNzMsNiBAQAog
CQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRv
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21N
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEZGMkE1RTExRjhDNDVBMDA3RTc0RTAgLyogUGlu
Z0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwQjU2MTcxMjExOUQyMzAwOEI0NkUwIC8q
IEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTk3OTE3MTIxNUQwNTUwMDVD
NDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJzICovLApJbmRleDogV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNTEsMTAgKzQxNTEsOCBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIGVsc2UgaWYgKENTU1By
aW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7CiAgICAgICAgICAgICBkb3Vi
bGUgbXVsdGlwbGllciA9IHpvb21GYWN0b3I7CiAgICAgICAgICAgICBpZiAobV9zdHlsZS0+dGV4
dFNpemVBZGp1c3QoKSkgewotICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBt
X2NoZWNrZXIubV9kb2N1bWVudC0+dmlldygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
aWV3LT5zaG91bGRBcHBseVRleHRab29tKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBtdWx0
aXBsaWVyICo9IHZpZXctPnRleHRab29tRmFjdG9yKCk7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2NoZWNrZXIubV9kb2N1bWVudC0+
dmlldygpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IHZpZXctPnRleHRab29t
RmFjdG9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSwgIG11bHRpcGxpZXIpLCBGaXhlZCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCkBAIC02MjMxLDcgKzYy
MjksNyBAQCBmbG9hdCBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb21wdXRlZFNpemVGCiAgICAgZmxv
YXQgem9vbUZhY3RvciA9IDEuMGY7CiAgICAgaWYgKCF1c2VTVkdab29tUnVsZXMpIHsKICAgICAg
ICAgem9vbUZhY3RvciA9IHN0eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0gICAgICAgIGlmIChkb2N1
bWVudC0+dmlldygpICYmIGRvY3VtZW50LT52aWV3KCktPnNob3VsZEFwcGx5VGV4dFpvb20oKSkK
KyAgICAgICAgaWYgKGRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgICAgICB6b29tRmFjdG9yICo9
IGRvY3VtZW50LT52aWV3KCktPnRleHRab29tRmFjdG9yKCk7CiAgICAgfQogCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQg
SFRNTEJvZHlFbGVtZW50OjpzZXRWTGluayhjb25zdCBTdHIKIAogc3RhdGljIGludCBhZGp1c3RG
b3Jab29tKGludCB2YWx1ZSwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7Ci0gICAgZmxvYXQgem9v
bUZhY3RvciA9IGZyYW1lVmlldy0+em9vbUZhY3RvcigpOworICAgIGZsb2F0IHpvb21GYWN0b3Ig
PSBmcmFtZVZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CiAgICAgaWYgKHpvb21GYWN0b3IgPT0gMSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIC8vIE5lZWRlZCBiZWNhdXNlIG9mIHRydW5jYXRp
b24gKHJhdGhlciB0aGFuIHJvdW5kaW5nKSB3aGVuIHNjYWxpbmcgdXAuCkBAIC0yNzksNyArMjc5
LDcgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbExlZnQoaW50IAogICAgIEZyYW1l
VmlldyogdmlldyA9IGRvY3VtZW50LT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm47Ci0gICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc3RhdGljX2Nhc3Q8
aW50PihzY3JvbGxMZWZ0ICogdmlldy0+em9vbUZhY3RvcigpKSwgdmlldy0+c2Nyb2xsWSgpKSk7
CisgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pihz
Y3JvbGxMZWZ0ICogdmlldy0+cGFnZVpvb21GYWN0b3IoKSksIHZpZXctPnNjcm9sbFkoKSkpOwog
fQogCiBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxUb3AoKSBjb25zdApAQCAtMjk4LDcgKzI5
OCw3IEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3JvbGxUb3AoaW50IHMKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAg
cmV0dXJuOwotICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KHZpZXctPnNjcm9s
bFgoKSwgc3RhdGljX2Nhc3Q8aW50PihzY3JvbGxUb3AgKiB2aWV3LT56b29tRmFjdG9yKCkpKSk7
CisgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQodmlldy0+c2Nyb2xsWCgpLCBz
dGF0aWNfY2FzdDxpbnQ+KHNjcm9sbFRvcCAqIHZpZXctPnBhZ2Vab29tRmFjdG9yKCkpKSk7CiB9
CiAKIGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbEhlaWdodCgpIGNvbnN0CkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2
aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNiBAQAogI2luY2x1ZGUgIlNjcm9sbEJlaGF2aW9yLmgiCiAjaW5jbHVkZSAiU2Vs
ZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgotI2luY2x1
ZGUgIlpvb21Nb2RlLmgiCiAKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSAiRnJhbWVXaW4u
aCIKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiAKICNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgorI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTExMSw3ICsxMTEsNyBAQCBzdHJ1Y3QgU2NoZWR1bGVk
RXZlbnQgOiBOb25jb3B5YWJsZSB7CiAgICAgUmVmUHRyPE5vZGU+IG1fZXZlbnRUYXJnZXQ7CiB9
OwogCi1zdGF0aWMgaW5saW5lIGZsb2F0IHBhcmVudFpvb21GYWN0b3IoRnJhbWUqIGZyYW1lKQor
c3RhdGljIGlubGluZSBmbG9hdCBwYXJlbnRQYWdlWm9vbUZhY3RvcihGcmFtZSogZnJhbWUpCiB7
CiAgICAgRnJhbWUqIHBhcmVudCA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIGlmICgh
cGFyZW50KQpAQCAtMTE5LDcgKzExOSwxOCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHBhcmVudFpv
b21GYWN0b3IoRnJhCiAgICAgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFyZW50LT52aWV3KCk7
CiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gcGFy
ZW50Vmlldy0+em9vbUZhY3RvcigpOworICAgIHJldHVybiBwYXJlbnRWaWV3LT5wYWdlWm9vbUZh
Y3RvcigpOworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IHBhcmVudFRleHRab29tRmFjdG9yKEZy
YW1lKiBmcmFtZSkKK3sKKyAgICBGcmFtZSogcGFyZW50ID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50
KCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiAxOworICAgIEZyYW1lVmlldyog
cGFyZW50VmlldyA9IHBhcmVudC0+dmlldygpOworICAgIGlmICghcGFyZW50VmlldykKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIHBhcmVudFZpZXctPnRleHRab29tRmFjdG9yKCk7CiB9
CiAKIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFtZSkKQEAgLTE0NSw3ICsxNTYsOSBA
QCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSogZnJhbWUpCiAgICAgLCBtX2RlZmVyU2V0TmVl
ZHNMYXlvdXRzKDApCiAgICAgLCBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQoZmFsc2UpCiAg
ICAgLCBtX3Njcm9sbENvcm5lcigwKQotICAgICwgbV96b29tRmFjdG9yKHBhcmVudFpvb21GYWN0
b3IoZnJhbWUpKQorICAgICwgbV9wYWdlWm9vbUZhY3RvcihwYXJlbnRQYWdlWm9vbUZhY3Rvcihm
cmFtZSkpCisgICAgLCBtX3RleHRab29tRmFjdG9yKHBhcmVudFRleHRab29tRmFjdG9yKGZyYW1l
KSkKKwogewogICAgIGluaXQoKTsKIH0KQEAgLTIyNzUsMjggKzIyODgsNTYgQEAgSW50UG9pbnQg
RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbgogICAgIHJldHVybiBwYXJlbnRQb2ludDsK
IH0KIAotYm9vbCBGcmFtZVZpZXc6OnNob3VsZEFwcGx5VGV4dFpvb20oKSBjb25zdAordm9pZCBG
cmFtZVZpZXc6OnNldFBhZ2Vab29tRmFjdG9yKGZsb2F0IGZhY3RvcikKIHsKLSAgICBpZiAobV96
b29tRmFjdG9yID09IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fZnJhbWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwotICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gWm9v
bVRleHRPbmx5OwotfQorICAgIGlmIChtX3BhZ2Vab29tRmFjdG9yID09IGZhY3RvcikKKyAgICAg
ICAgcmV0dXJuOwogCi1ib29sIEZyYW1lVmlldzo6c2hvdWxkQXBwbHlQYWdlWm9vbSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fem9vbUZhY3RvciA9PSAxKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsK
KwogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYg
cGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tUGFnZTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5B
QkxFKFNWRykKKyAgICAvLyBSZXNwZWN0IFNWR3Mgem9vbUFuZFBhbj0iZGlzYWJsZWQiIHByb3Bl
cnR5IGluIHN0YW5kYWxvbmUgU1ZHIGRvY3VtZW50cy4KKyAgICAvLyBGSVhNRTogSG93IHRvIGhh
bmRsZSBjb21wb3VuZCBkb2N1bWVudHMgKyB6b29tQW5kUGFuPSJkaXNhYmxlZCI/IE5lZWRzIFNW
RyBXRyBjbGFyaWZpY2F0aW9uLgorICAgIGlmIChkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKSB7
CisgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2N1bWVudCktPnpvb21B
bmRQYW5FbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChkb2N1bWVu
dC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXROZWVk
c0xheW91dCh0cnVlKTsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xs
IHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwgc28gdGhlIGNvbnRlbnQgc3Rh
eXMgaW4gcmVsYXRpdmVseSB0aGUgc2FtZSBwb3NpdGlvbi4KKyAgICBJbnRQb2ludCBzY3JvbGxQ
b3NpdGlvbiA9IHRoaXMtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgZmxvYXQgcGVyY2VudERpZmZl
cmVuY2UgPSAoZmFjdG9yIC8gbV9wYWdlWm9vbUZhY3Rvcik7CisgICAgc2V0U2Nyb2xsUG9zaXRp
b24oSW50UG9pbnQoc2Nyb2xsUG9zaXRpb24ueCgpICogcGVyY2VudERpZmZlcmVuY2UsIHNjcm9s
bFBvc2l0aW9uLnkoKSAqIHBlcmNlbnREaWZmZXJlbmNlKSk7CisKKyAgICBtX3BhZ2Vab29tRmFj
dG9yID0gZmFjdG9yOworCisgICAgZG9jdW1lbnQtPnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsK
KworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
aWYgKEZyYW1lVmlldyogY2hpbGRWaWV3ID0gY2hpbGQtPnZpZXcoKSkKKyAgICAgICAgICAgIGNo
aWxkVmlldy0+c2V0UGFnZVpvb21GYWN0b3IobV9wYWdlWm9vbUZhY3Rvcik7CisgICAgfQorCisg
ICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpICYmIGRvY3VtZW50LT5yZW5kZXJlcigpLT5uZWVk
c0xheW91dCgpICYmIGRpZEZpcnN0TGF5b3V0KCkpCisgICAgICAgIGxheW91dCgpOwogfQogCi12
b2lkIEZyYW1lVmlldzo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjZW50LCBab29tTW9kZSBtb2Rl
KQordm9pZCBGcmFtZVZpZXc6OnNldFRleHRab29tRmFjdG9yKGZsb2F0IGZhY3RvcikKIHsKKyAg
ICBpZiAobV90ZXh0Wm9vbUZhY3RvciA9PSBmYWN0b3IpCisgICAgICAgIHJldHVybjsKKwogICAg
IGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzA0LDkgKzIzNDUsNiBAQCB2
b2lkIEZyYW1lVmlldzo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjCiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV96b29tRmFjdG9yID09IHBlcmNlbnQgJiYgcGFn
ZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBtb2RlKQotICAgICAgICByZXR1cm47Ci0KICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMjIsMjggKzIzNjAsMTkgQEAgdm9pZCBGcmFt
ZVZpZXc6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyYwogICAgIH0KICNlbmRpZgogCi0gICAgaWYg
KG1vZGUgPT0gWm9vbVBhZ2UpIHsKLSAgICAgICAgLy8gVXBkYXRlIHRoZSBzY3JvbGwgcG9zaXRp
b24gd2hlbiBkb2luZyBhIGZ1bGwgcGFnZSB6b29tLCBzbyB0aGUgY29udGVudCBzdGF5cyBpbiBy
ZWxhdGl2ZWx5IHRoZSBzYW1lIHBvc2l0aW9uLgotICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbiA9IHRoaXMtPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAgIGZsb2F0IHBlcmNlbnREaWZm
ZXJlbmNlID0gKHBlcmNlbnQgLyBtX3pvb21GYWN0b3IpOwotICAgICAgICBzZXRTY3JvbGxQb3Np
dGlvbihJbnRQb2ludChzY3JvbGxQb3NpdGlvbi54KCkgKiBwZXJjZW50RGlmZmVyZW5jZSwgc2Ny
b2xsUG9zaXRpb24ueSgpICogcGVyY2VudERpZmZlcmVuY2UpKTsKLSAgICB9Ci0KLSAgICBtX3pv
b21GYWN0b3IgPSBwZXJjZW50OwotICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldFpvb21Nb2RlKG1v
ZGUpOworICAgIG1fdGV4dFpvb21GYWN0b3IgPSBmYWN0b3I7CiAKICAgICBkb2N1bWVudC0+cmVj
YWxjU3R5bGUoTm9kZTo6Rm9yY2UpOwogCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1l
LT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiBjaGlsZFZpZXcgPSBjaGlsZC0+
dmlldygpKQotICAgICAgICAgICAgY2hpbGRWaWV3LT5zZXRab29tRmFjdG9yKG1fem9vbUZhY3Rv
ciwgbW9kZSk7CisgICAgICAgICAgICBjaGlsZFZpZXctPnNldFRleHRab29tRmFjdG9yKG1fdGV4
dFpvb21GYWN0b3IpOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIoKSAmJiBk
b2N1bWVudC0+cmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiBkaWRGaXJzdExheW91dCgpKQog
ICAgICAgICBsYXlvdXQoKTsKIH0KIAotCiAvLyBOb3JtYWwgZGVsYXkKIHZvaWQgRnJhbWVWaWV3
OjpzZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVycmVkUmVwYWludERlbGF5KGRvdWJsZSBwKQogewpJ
bmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMiArMjE3LDEwIEBAIHB1YmxpYzoKICAgICBib29s
IGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKFJlbmRlclNjcm9sbGJhclBhcnQqIHNjcm9sbENvcm5l
cikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIgPT0gc2Nyb2xsQ29ybmVyOyB9CiAgICAg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKCk7CiAKLSAgICB2b2lkIHNldFpvb21GYWN0b3Io
ZmxvYXQgc2NhbGUsIFpvb21Nb2RlKTsKLSAgICBmbG9hdCB6b29tRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV96b29tRmFjdG9yOyB9Ci0gICAgYm9vbCBzaG91bGRBcHBseVRleHRab29tKCkgY29u
c3Q7Ci0gICAgYm9vbCBzaG91bGRBcHBseVBhZ2Vab29tKCkgY29uc3Q7Ci0gICAgZmxvYXQgcGFn
ZVpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBzaG91bGRBcHBseVBhZ2Vab29tKCkgPyBtX3pv
b21GYWN0b3IgOiAxLjBmOyB9Ci0gICAgZmxvYXQgdGV4dFpvb21GYWN0b3IoKSBjb25zdCB7IHJl
dHVybiBzaG91bGRBcHBseVRleHRab29tKCkgPyBtX3pvb21GYWN0b3IgOiAxLjBmOyB9CisgICAg
dm9pZCBzZXRQYWdlWm9vbUZhY3RvcihmbG9hdCBmYWN0b3IpOworICAgIGZsb2F0IHBhZ2Vab29t
RmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlWm9vbUZhY3RvcjsgfQorICAgIHZvaWQgc2V0
VGV4dFpvb21GYWN0b3IoZmxvYXQgZmFjdG9yKTsKKyAgICBmbG9hdCB0ZXh0Wm9vbUZhY3Rvcigp
IGNvbnN0ICB7IHJldHVybiBtX3RleHRab29tRmFjdG9yOyB9CiAKICAgICAvLyBOb3JtYWwgZGVs
YXkKICAgICBzdGF0aWMgdm9pZCBzZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVycmVkUmVwYWludERl
bGF5KGRvdWJsZSBwKTsKQEAgLTM3Myw3ICszNzEsOCBAQCBwcml2YXRlOgogICAgIC8vIFJlbmRl
cmVyIHRvIGhvbGQgb3VyIGN1c3RvbSBzY3JvbGwgY29ybmVyLgogICAgIFJlbmRlclNjcm9sbGJh
clBhcnQqIG1fc2Nyb2xsQ29ybmVyOwogCi0gICAgZmxvYXQgbV96b29tRmFjdG9yOworICAgIGZs
b2F0IG1fcGFnZVpvb21GYWN0b3I7CisgICAgZmxvYXQgbV90ZXh0Wm9vbUZhY3RvcjsKIAogICAg
IHN0YXRpYyBkb3VibGUgc19kZWZlcnJlZFJlcGFpbnREZWxheTsKICAgICBzdGF0aWMgZG91Ymxl
IHNfaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJl
dmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MjAsNiArODIwLDEyIEBAIGJvb2wgUGFnZTo6amF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKCkg
Y28KICAgICByZXR1cm4gbV9qYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQ7CiB9CiAKK3ZvaWQgUGFn
ZTo6c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCkKK3sKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJz
ZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2Vk
KERlZmVyUmVjYWxjU3R5bGUpOworfQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIFBhZ2U6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAogewpJ
bmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFn
ZS5oCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4Miw2ICsyODIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
c2V0SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3Jp
cHRVUkxzQXJlQWxsb3dlZCgpIGNvbnN0OwogCisgICAgICAgIHZvaWQgc2V0TmVlZHNSZWNhbGNT
dHlsZUluQWxsRnJhbWVzKCk7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7CiAjZW5k
aWYKQEAgLTI5MSw2ICsyOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHJl
Y3Vyc2l2ZSBmcmFtZXNldCBwYWdlcyBjYW4gcXVpY2tseSBicmluZyB0aGUgcHJvZ3JhbSB0byBp
dHMga25lZXMKICAgICAgICAgLy8gd2l0aCBleHBvbmVudGlhbCBncm93dGggaW4gdGhlIG51bWJl
ciBvZiBmcmFtZXMuCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4TnVtYmVyT2ZGcmFtZXMg
PSAxMDAwOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApJbmRl
eDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgc2V0TmVlZHNSZWNhbGNTdHls
ZUluQWxsRnJhbWVzKFBhZ2UqIHBhZ2UpCi17Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdl
LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZl
clJlY2FsY1N0eWxlKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5SW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5l
eHQoKSkKQEAgLTc1LDcgKzY5LDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAg
ICAgLCBtX3Nlc3Npb25TdG9yYWdlUXVvdGEoU3RvcmFnZU1hcDo6bm9RdW90YSkKICNlbmRpZgog
ICAgICwgbV9wbHVnaW5BbGxvd2VkUnVuVGltZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQotICAgICwgbV96b29tTW9kZShab29tUGFnZSkKICAgICAsIG1faXNTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAgICAgLCBt
X2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSkKQEAgLTE1OCw3ICsxNTEsNyBAQCB2b2lk
IFNldHRpbmdzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkoY29uCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fc3RhbmRhcmRGb250RmFtaWx5ID0gc3RhbmRhcmRGb250RmFtaWx5OwotICAgIHNldE5l
ZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIG1fcGFnZS0+c2V0TmVlZHNS
ZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldEZpeGVkRm9u
dEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9udEZhbWlseSkKQEAgLTE2Nyw3ICsx
NjAsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgCiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgbV9maXhlZEZvbnRGYW1pbHkgPSBmaXhlZEZvbnRGYW1p
bHk7Ci0gICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgbV9w
YWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAogdm9pZCBTZXR0aW5n
czo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgc2VyaWZGb250RmFtaWx5
KQpAQCAtMTc2LDcgKzE2OSw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNlcmlmRm9udEZhbWlseShj
b25zdCAKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBtX3NlcmlmRm9udEZhbWlseSA9
IHNlcmlmRm9udEZhbWlseTsKLSAgICBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMobV9w
YWdlKTsKKyAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQog
CiB2b2lkIFNldHRpbmdzOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2Fuc1NlcmlmRm9udEZhbWlseSkKQEAgLTE4NSw3ICsxNzgsNyBAQCB2b2lkIFNldHRpbmdz
OjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAg
ICAgbV9zYW5zU2VyaWZGb250RmFtaWx5ID0gc2Fuc1NlcmlmRm9udEZhbWlseTsgCi0gICAgc2V0
TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgbV9wYWdlLT5zZXROZWVk
c1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0Q3Vyc2l2
ZUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBjdXJzaXZlRm9udEZhbWlseSkKQEAgLTE5
NCw3ICsxODcsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRDdXJzaXZlRm9udEZhbWlseShjb25zCiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgbV9jdXJzaXZlRm9udEZhbWlseSA9IGN1cnNp
dmVGb250RmFtaWx5OwotICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2Up
OworICAgIG1fcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CiB9CiAKIHZv
aWQgU2V0dGluZ3M6OnNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFu
dGFzeUZvbnRGYW1pbHkpCkBAIC0yMDMsNyArMTk2LDcgQEAgdm9pZCBTZXR0aW5nczo6c2V0RmFu
dGFzeUZvbnRGYW1pbHkoY29ucwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIG1fZmFu
dGFzeUZvbnRGYW1pbHkgPSBmYW50YXN5Rm9udEZhbWlseTsKLSAgICBzZXROZWVkc1JlY2FsY1N0
eWxlSW5BbGxGcmFtZXMobV9wYWdlKTsKKyAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJ
bkFsbEZyYW1lcygpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRNaW5pbXVtRm9udFNpemUoaW50
IG1pbmltdW1Gb250U2l6ZSkKQEAgLTIxMiw3ICsyMDUsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRN
aW5pbXVtRm9udFNpemUoaW50IG1pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWluaW11bUZv
bnRTaXplID0gbWluaW11bUZvbnRTaXplOwotICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZy
YW1lcyhtX3BhZ2UpOworICAgIG1fcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVz
KCk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoaW50IG1p
bmltdW1Mb2dpY2FsRm9udFNpemUpCkBAIC0yMjEsNyArMjE0LDcgQEAgdm9pZCBTZXR0aW5nczo6
c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZQogICAgICAgICByZXR1cm47CiAKICAgICBtX21pbmlt
dW1Mb2dpY2FsRm9udFNpemUgPSBtaW5pbXVtTG9naWNhbEZvbnRTaXplOwotICAgIHNldE5lZWRz
UmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIG1fcGFnZS0+c2V0TmVlZHNSZWNh
bGNTdHlsZUluQWxsRnJhbWVzKCk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldERlZmF1bHRGb250
U2l6ZShpbnQgZGVmYXVsdEZvbnRTaXplKQpAQCAtMjMwLDcgKzIyMyw3IEBAIHZvaWQgU2V0dGlu
Z3M6OnNldERlZmF1bHRGb250U2l6ZShpbnQgZGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9k
ZWZhdWx0Rm9udFNpemUgPSBkZWZhdWx0Rm9udFNpemU7Ci0gICAgc2V0TmVlZHNSZWNhbGNTdHls
ZUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5B
bGxGcmFtZXMoKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0RGVmYXVsdEZpeGVkRm9udFNpemUo
aW50IGRlZmF1bHRGb250U2l6ZSkKQEAgLTIzOSw3ICsyMzIsNyBAQCB2b2lkIFNldHRpbmdzOjpz
ZXREZWZhdWx0Rml4ZWRGb250U2l6ZShpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGVmYXVs
dEZpeGVkRm9udFNpemUgPSBkZWZhdWx0Rm9udFNpemU7Ci0gICAgc2V0TmVlZHNSZWNhbGNTdHls
ZUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5B
bGxGcmFtZXMoKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KQpAQCAtMzUwLDcgKzM0Myw3IEBAIHZv
aWQgU2V0dGluZ3M6OnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZSgKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV90ZXh0QXJlYXNBcmVSZXNpemFibGUgPSB0ZXh0QXJlYXNBcmVSZXNpemFibGU7Ci0g
ICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgbV9wYWdlLT5z
ZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0
RWRpdGFibGVMaW5rQmVoYXZpb3IoRWRpdGFibGVMaW5rQmVoYXZpb3IgZWRpdGFibGVMaW5rQmVo
YXZpb3IpCkBAIC00NTAsNyArNDQzLDcgQEAgdm9pZCBTZXR0aW5nczo6c2V0QXV0aG9yQW5kVXNl
clN0eWxlc0VuYQogICAgICAgICByZXR1cm47CiAKICAgICBtX2F1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkID0gYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ7Ci0gICAgc2V0TmVlZHNSZWNhbGNT
dHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxl
SW5BbGxGcmFtZXMoKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0Rm9udFJlbmRlcmluZ01vZGUo
Rm9udFJlbmRlcmluZ01vZGUgbW9kZSkKQEAgLTQ1OCw3ICs0NTEsNyBAQCB2b2lkIFNldHRpbmdz
OjpzZXRGb250UmVuZGVyaW5nTW9kZShGb250CiAgICAgaWYgKGZvbnRSZW5kZXJpbmdNb2RlKCkg
PT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZm9udFJlbmRlcmluZ01vZGUgPSBtb2Rl
OwotICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAgIG1fcGFn
ZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CiB9CiAKIEZvbnRSZW5kZXJpbmdN
b2RlIFNldHRpbmdzOjpmb250UmVuZGVyaW5nTW9kZSgpIGNvbnN0CkBAIC01MTEsMTUgKzUwNCw2
IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2wKICAgICBtX3Nob3Vs
ZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyA9IHNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFyczsKIH0K
IAotdm9pZCBTZXR0aW5nczo6c2V0Wm9vbU1vZGUoWm9vbU1vZGUgbW9kZSkKLXsKLSAgICBpZiAo
bW9kZSA9PSBtX3pvb21Nb2RlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV96b29tTW9k
ZSA9IG1vZGU7Ci0gICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7Ci19
Ci0KIHZvaWQgU2V0dGluZ3M6OnNldEVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKGJv
b2wgZW5mb3JjZUNTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUpCiB7CiAgICAgbV9lbmZvcmNlQ1NT
TUlNRVR5cGVJbk5vUXVpcmtzTW9kZSA9IGVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2Rl
OwpAQCAtNTY4LDcgKzU1Miw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkID0gZW5hYmxlZDsKLSAgICBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFt
ZXMobV9wYWdlKTsKKyAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygp
OwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZW5hYmxlZCkK
QEAgLTU3Nyw3ICs1NjEsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRTaG93RGVidWdCb3JkZXJzKGJv
b2wgCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgbV9zaG93RGVidWdCb3JkZXJzID0g
ZW5hYmxlZDsKLSAgICBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMobV9wYWdlKTsKKyAg
ICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQogCiB2b2lkIFNl
dHRpbmdzOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBlbmFibGVkKQpAQCAtNTg2LDcgKzU3
MCw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNob3dSZXBhaW50Q291bnRlcihib28KICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBtX3Nob3dSZXBhaW50Q291bnRlciA9IGVuYWJsZWQ7Ci0g
ICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgbV9wYWdlLT5z
ZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0
RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpJbmRleDogV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJFZGl0aW5nQmVoYXZpb3JUeXBlcy5o
IgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgotI2lu
Y2x1ZGUgIlpvb21Nb2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1MSw5ICsyNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdm9pZCBzZXRTaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoYm9vbCk7
CiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnM7IH0KLQotICAgICAgICB2b2lkIHNldFpv
b21Nb2RlKFpvb21Nb2RlKTsKLSAgICAgICAgWm9vbU1vZGUgem9vbU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3pvb21Nb2RlOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEVuZm9yY2VDU1NN
SU1FVHlwZUluTm9RdWlya3NNb2RlKGJvb2wpOwogICAgICAgICBib29sIGVuZm9yY2VDU1NNSU1F
VHlwZUluTm9RdWlya3NNb2RlKCkgeyByZXR1cm4gbV9lbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVp
cmtzTW9kZTsgfQpAQCAtMzU0LDcgKzM1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdW5zaWduZWQgbV9zZXNzaW9uU3RvcmFnZVF1b3RhOwogI2VuZGlmCiAgICAgICAgIHVuc2ln
bmVkIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWU7Ci0gICAgICAgIFpvb21Nb2RlIG1fem9vbU1vZGU7
CiAgICAgICAgIGJvb2wgbV9pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCA6IDE7CiAgICAgICAg
IGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0
b21hdGljYWxseSA6IDE7CkluZGV4OiBXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3Jl
L3BhZ2UvWm9vbU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIGluIE1vdGlvbiBMdGQuIGh0dHA6Ly93d3cucmlt
LmNvbS8KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2lmbmRlZiBab29tTW9kZV9oCi0jZGVmaW5lIFpvb21Nb2RlX2gKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1lbnVtIFpvb21Nb2RlIHsKLSAgICBab29tUGFnZSwKLSAgICBab29tVGV4
dE9ubHkKLX07Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAko
cmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjY1LDkgKzY2NSw3IEBAIGludCBSZW5kZXJWaWV3Ojp2aWV3V2lkdGgo
KSBjb25zdAogCiBmbG9hdCBSZW5kZXJWaWV3Ojp6b29tRmFjdG9yKCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fZnJhbWVWaWV3LT5zaG91bGRBcHBseVBhZ2Vab29tKCkpCi0gICAgICAgIHJldHVybiAx
OwotICAgIHJldHVybiBtX2ZyYW1lVmlldy0+em9vbUZhY3RvcigpOworICAgIHJldHVybiBtX2Zy
YW1lVmlldy0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAogLy8gVGhlIGlkZWEgaGVyZSBpcyB0byB0
YWtlIGludG8gYWNjb3VudCB3aGF0IG9iamVjdCBpcyBtb3ZpbmcgdGhlIHBhZ2luYXRpb24gcG9p
bnQsIGFuZApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDY3MTE5KQorKysgV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQs
NyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZShmbG9hCiAgICAgICAgIC8v
IENhbGxpbmcgc2V0Q3VycmVudFNjYWxlKCkgb24gdGhlIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50
IGluIGEgc3RhbmRhbG9uZSBTVkcgZG9jdW1lbnQKICAgICAgICAgLy8gaXMgYWxsb3dlZCB0byBj
aGFuZ2UgdGhlIHBhZ2Ugem9vbSBmYWN0b3IsIGluZmx1ZW5jaW5nIHRoZSBkb2N1bWVudCBzaXpl
LCBzY3JvbGxiYXJzIGV0Yy4KICAgICAgICAgaWYgKHBhcmVudE5vZGUoKSA9PSBkb2N1bWVudCgp
KQotICAgICAgICAgICAgdmlldy0+c2V0Wm9vbUZhY3RvcihzY2FsZSwgWm9vbVBhZ2UpOworICAg
ICAgICAgICAgdmlldy0+c2V0UGFnZVpvb21GYWN0b3Ioc2NhbGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gNjcxNjUpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEwLTA5LTA5ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBl
aXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8g
PHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisgICAgICAgIE5vdyB0aGF0IFdlYkNvcmUgZG9lc24n
dCByZXF1aXJlIGEgbW9kZSwgY2hhbmdlIHRoZSBidW5kbGUgQVBJIGZvciB6b29tIHRvIG5vdAor
ICAgICAgICByZXF1aXJlIG9uZSBlaXRoZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxl
UGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUdldFRleHRab29tRmFjdG9y
KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFdL
QnVuZGxlUGFnZUdldFBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFBh
Z2Vab29tRmFjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp0ZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGFnZVpv
b21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRQYWdlWm9vbUZhY3Rvcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxMC0wOS0wOSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkocmV2aXNpb24gNjcxMTkp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElD
YXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRBZmZpbml0eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlwdFR5cGVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9a
b29tTW9kZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTU3R5bGVEZWNs
YXJhdGlvbjsKQEAgLTExOCwxOSArMTE3LDYgQEAgaW5saW5lIFdLQWZmaW5pdHlUeXBlIHRvV0so
V2ViQ29yZTo6RUFmZgogICAgIHJldHVybiBrV0tBZmZpbml0eVVwc3RyZWFtOwogfQogCi1pbmxp
bmUgV2ViQ29yZTo6Wm9vbU1vZGUgdG9ab29tTW9kZShXS0J1bmRsZVBhZ2Vab29tTW9kZSB3a1pv
b21Nb2RlKQotewotICAgIHN3aXRjaCAod2tab29tTW9kZSkgewotICAgIGNhc2Uga1dLQnVuZGxl
UGFnZVpvb21Nb2RlVGV4dE9ubHk6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpab29tVGV4dE9u
bHk7Ci0gICAgY2FzZSBrV0tCdW5kbGVQYWdlWm9vbU1vZGVQYWdlOgotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Wm9vbVBhZ2U7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6Olpvb21UZXh0T25seTsKLX0KLQogaW5saW5lIFdlYkNvcmU6OlVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSB3a0luamVjdGVkVGltZSkKIHsKICAgICBzd2l0Y2ggKHdrSW5qZWN0
ZWRUaW1lKSB7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTEgQEAgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBh
Z2VHZXRNYWluRnJhbQogICAgIHJldHVybiB0b1JlZih0b1dLKHBhZ2VSZWYpLT5tYWluRnJhbWUo
KSk7CiB9CiAKK3ZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmcoV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYpCit7CisgICAgdG9XSyhwYWdlUmVmKS0+c3RvcExvYWRpbmcoKTsKK30KKwogV0tTdHJp
bmdSZWYgV0tCdW5kbGVQYWdlQ29weVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHJldHVybiB0b0NvcGllZFJlZih0b1dLKHBh
Z2VSZWYpLT5yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpKTsKQEAgLTk1LDIyICsx
MDAsMjIgQEAgdm9pZCBXS0J1bmRsZVBhZ2VDbG9zZShXS0J1bmRsZVBhZ2VSZWYgcAogICAgIHRv
V0socGFnZVJlZiktPnNlbmRDbG9zZSgpOwogfQogCi1mbG9hdCBXS0J1bmRsZVBhZ2VHZXRab29t
RmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQorZmxvYXQgV0tCdW5kbGVQYWdlR2V0VGV4
dFpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0so
cGFnZVJlZiktPnpvb21GYWN0b3IoKTsKKyAgICByZXR1cm4gdG9XSyhwYWdlUmVmKS0+dGV4dFpv
b21GYWN0b3IoKTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTZXRab29tRmFjdG9yKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBmbG9hdCB6b29tRmFjdG9yKQordm9pZCBXS0J1bmRsZVBhZ2VTZXRU
ZXh0Wm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgZmxvYXQgem9vbUZhY3RvcikK
IHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IpOworICAgIHRv
V0socGFnZVJlZiktPnNldFRleHRab29tRmFjdG9yKHpvb21GYWN0b3IpOwogfQogCi12b2lkIFdL
QnVuZGxlUGFnZVNldFpvb21Nb2RlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBh
Z2Vab29tTW9kZSB6b29tTW9kZSkKK2Zsb2F0IFdLQnVuZGxlUGFnZUdldFBhZ2Vab29tRmFjdG9y
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvV0socGFnZVJlZiktPnNldFpvb21N
b2RlKHRvWm9vbU1vZGUoem9vbU1vZGUpKTsKKyAgICByZXR1cm4gdG9XSyhwYWdlUmVmKS0+cGFn
ZVpvb21GYWN0b3IoKTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTdG9wTG9hZGluZyhXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZikKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGZsb2F0IHpvb21GYWN0b3IpCiB7Ci0gICAgdG9XSyhwYWdl
UmVmKS0+c3RvcExvYWRpbmcoKTsKKyAgICB0b1dLKHBhZ2VSZWYpLT5zZXRQYWdlWm9vbUZhY3Rv
cih6b29tRmFjdG9yKTsKIH0KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAkocmV2aXNp
b24gNjcxMTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMyArMzMsMTggQEAKIGV4
dGVybiAiQyIgewogI2VuZGlmCiAKLWVudW0gV0tCdW5kbGVQYWdlWm9vbU1vZGUgewotICAgIGtX
S0J1bmRsZVBhZ2Vab29tTW9kZVBhZ2UgPSAwLAotICAgIGtXS0J1bmRsZVBhZ2Vab29tTW9kZVRl
eHRPbmx5ID0gMQotfTsKLXR5cGVkZWYgZW51bSBXS0J1bmRsZVBhZ2Vab29tTW9kZSBXS0J1bmRs
ZVBhZ2Vab29tTW9kZTsKLQorV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmco
V0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSXNFZGl0
aW5nQ29tbWFuZEVuYWJsZWQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGNvbW1h
bmROYW1lKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNsZWFyTWFpbkZyYW1lTmFtZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDbG9zZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdl
Q29weVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdl
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgY29tbWFuZE5hbWUsIFdLU3RyaW5nUmVmIGFy
Z3VtZW50KTsKIAotV0tfRVhQT1JUIGZsb2F0IFdLQnVuZGxlUGFnZUdldFpvb21GYWN0b3IoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Wm9vbUZh
Y3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZmxvYXQgem9vbUZhY3Rvcik7Ci1XS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VTZXRab29tTW9kZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVQYWdlWm9vbU1vZGUgem9vbU1vZGUpOworV0tfRVhQT1JUIGZsb2F0IFdLQnVuZGxlUGFnZUdl
dFRleHRab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBmbG9hdCB6
b29tRmFjdG9yKTsKK1dLX0VYUE9SVCBmbG9hdCBXS0J1bmRsZVBhZ2VHZXRQYWdlWm9vbUZhY3Rv
cihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQ
YWdlWm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZmxvYXQgem9vbUZhY3Rvcik7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVN0b3BMb2FkaW5nKFdLQnVuZGxlUGFnZVJlZiBw
YWdlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw2IEBAIFdl
YlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBtX3BhZ2UtPnNldHRp
bmdzKCktPnNldEZpeGVkRm9udEZhbWlseShzdG9yZS5maXhlZEZvbnRGYW1pbHkpOwogICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShzdG9yZS5zYW5zU2VyaWZG
b250RmFtaWx5KTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFNlcmlmRm9udEZhbWlseShz
dG9yZS5zZXJpZkZvbnRGYW1pbHkpOwotCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHRydWUpOwogCiAgICAgbV9wYWdlLT5z
ZXRHcm91cE5hbWUoIldlYktpdDJHcm91cCIpOwpAQCAtMzAzLDI3ICszMDIsNDAgQEAgdm9pZCBX
ZWJQYWdlOjpkcmF3UmVjdChHcmFwaGljc0NvbnRleHQmIAogICAgIGdyYXBoaWNzQ29udGV4dC5y
ZXN0b3JlKCk7CiB9CiAKLWZsb2F0IFdlYlBhZ2U6Onpvb21GYWN0b3IoKSBjb25zdAorZmxvYXQg
V2ViUGFnZTo6dGV4dFpvb21GYWN0b3IoKSBjb25zdAogewogICAgIGlmIChGcmFtZSogY29yZUZy
YW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcq
IHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHJldHVybiB2aWV3LT56b29t
RmFjdG9yKCk7CisgICAgICAgICAgICByZXR1cm4gdmlldy0+dGV4dFpvb21GYWN0b3IoKTsKICAg
ICB9CiAgICAgCiAgICAgcmV0dXJuIDEuMGY7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0Wm9vbUZh
Y3RvcihmbG9hdCB6b29tRmFjdG9yKQordm9pZCBXZWJQYWdlOjpzZXRUZXh0Wm9vbUZhY3Rvcihm
bG9hdCB6b29tRmFjdG9yKQoreworICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpKSB7CisgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJh
bWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB2aWV3LT5zZXRUZXh0Wm9vbUZhY3Rvcih6
b29tRmFjdG9yKTsKKyAgICB9Cit9CisKK2Zsb2F0IFdlYlBhZ2U6OnBhZ2Vab29tRmFjdG9yKCkg
Y29uc3QKIHsKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJh
bWUoKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdmlldy0+c2V0Wm9vbUZhY3Rvcih6b29tRmFjdG9yLCBtX3Bh
Z2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIHZpZXctPnBh
Z2Vab29tRmFjdG9yKCk7CiAgICAgfQorICAgIAorICAgIHJldHVybiAxLjBmOwogfQogCi12b2lk
IFdlYlBhZ2U6OnNldFpvb21Nb2RlKFpvb21Nb2RlIG1vZGUpCit2b2lkIFdlYlBhZ2U6OnNldFBh
Z2Vab29tRmFjdG9yKGZsb2F0IHpvb21GYWN0b3IpCiB7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygp
LT5zZXRab29tTW9kZShtb2RlKTsKKyAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZy
YW1lLT52aWV3KCkpCisgICAgICAgICAgICByZXR1cm4gdmlldy0+c2V0UGFnZVpvb21GYWN0b3Io
em9vbUZhY3Rvcik7CisgICAgfQogfQogCiAvLyBFdmVudHMgCkluZGV4OiBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIldlYkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9a
b29tTW9kZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0xMjYsOSArMTI1LDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyTWFpbkZyYW1lTmFtZSgpOwogICAgIHZvaWQgc2VuZENsb3Nl
KCk7CiAKLSAgICBmbG9hdCB6b29tRmFjdG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRab29tRmFj
dG9yKGZsb2F0KTsKLSAgICB2b2lkIHNldFpvb21Nb2RlKFdlYkNvcmU6Olpvb21Nb2RlKTsKKyAg
ICBmbG9hdCB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgc2V0VGV4dFpvb21GYWN0
b3IoZmxvYXQpOworICAgIGZsb2F0IHBhZ2Vab29tRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRQYWdlWm9vbUZhY3RvcihmbG9hdCk7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjcxNjUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMDkgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY29uc3RyYWludCBpbiBXZWJDb3JlIG9m
IGNob29zaW5nIGVpdGhlciB0ZXh0IHpvb20gb3IgZnVsbCBwYWdlIHpvb20uCisgICAgICAgIFBy
ZWN1cnNvciB0byA8cmRhcjovL3Byb2JsZW0vNzY2MDY1Nz4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTIyCisKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRab29tTGV2ZWwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6em9vbVRleHRPbmx5KToKKyAgICAgICAg
TW92ZSB0cmFja2luZyBvZiB0ZXh0IG9ubHkgem9vbSBoZXJlIGZyb20gV2ViQ29yZS4KKwogMjAx
MC0wOS0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY3MTE2KQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk4LDEyICsx
Mzk4LDEyIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEltcGwKICAgICBp
ZiAoIXdlYlBsdWdpbi0+aW5pdGlhbGl6ZShjb250YWluZXIuZ2V0KCkpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIGlmIChtX3dlYkZyYW1lLT5mcmFtZSgpLT52aWV3KCktPnpvb21GYWN0b3Io
KSAhPSAxKSB7CisgICAgYm9vbCB6b29tVGV4dE9ubHkgPSBtX3dlYkZyYW1lLT52aWV3SW1wbCgp
OworICAgIGZsb2F0IHpvb21GYWN0b3IgPSB6b29tVGV4dE9ubHkgPyBtX3dlYkZyYW1lLT5mcmFt
ZSgpLT52aWV3KCktPnRleHRab29tRmFjdG9yKCkgOiBtX3dlYkZyYW1lLT5mcmFtZSgpLT52aWV3
KCktPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgaWYgKHpvb21GYWN0b3IgIT0gMSkgewogICAgICAg
ICAvLyBUaGVyZSdzIGEgc2F2ZWQgem9vbSBsZXZlbCwgc28gdGVsbCB0aGUgcGx1Z2luIGFib3V0
IGl0IHNpbmNlCiAgICAgICAgIC8vIFdlYlZpZXdJbXBsOjpzZXRab29tTGV2ZWwgd2FzIGNhbGxl
ZCBiZWZvcmUgdGhlIHBsdWdpbiB3YXMgY3JlYXRlZC4KLSAgICAgICAgd2ViUGx1Z2luLT5zZXRa
b29tRmFjdG9yKAotICAgICAgICAgICAgbV93ZWJGcmFtZS0+ZnJhbWUoKS0+dmlldygpLT56b29t
RmFjdG9yKCksCi0gICAgICAgICAgICBtX3dlYkZyYW1lLT5mcmFtZSgpLT5wYWdlKCktPnNldHRp
bmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKKyAgICAgICAgd2ViUGx1Z2luLT5z
ZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHpvb21UZXh0T25seSk7CiAgICAgfQogCiAgICAgLy8g
VGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgZHVyaW5nIHBsdWdpbiBpbml0aWFs
aXphdGlvbiEKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA2
NzExNikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDUsNiArMjQ1LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdD
bGllbnQqIAogICAgICwgbV9uZXdOYXZpZ2F0aW9uTG9hZGVyKDApCiAjZW5kaWYKICAgICAsIG1f
em9vbUxldmVsKDApCisgICAgLCBtX3pvb21UZXh0T25seShmYWxzZSkKICAgICAsIG1fY29udGV4
dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2luZ0RyYWdBbmREcm9wKGZhbHNlKQogICAg
ICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAgLTE0NzcsMTMgKzE0NzgsMjkgQEAgaW50
IFdlYlZpZXdJbXBsOjpzZXRab29tTGV2ZWwoYm9vbCB0ZXh0TwogICAgIEZyYW1lVmlldyogdmll
dyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gbV96b29t
TGV2ZWw7Ci0gICAgaWYgKHpvb21GYWN0b3IgIT0gdmlldy0+em9vbUZhY3RvcigpKSB7Ci0gICAg
ICAgIHZpZXctPnNldFpvb21GYWN0b3Ioem9vbUZhY3RvciwgdGV4dE9ubHkgPyBab29tVGV4dE9u
bHkgOiBab29tUGFnZSk7CisKKyAgICBmbG9hdCBvbGRab29tRmFjdG9yID0gbV96b29tVGV4dE9u
bHkgPyB2aWV3LT50ZXh0Wm9vbUZhY3RvcigpIDogcGFnZS0+dGV4dFpvb21GYWN0b3IoKTsKKwor
ICAgIGlmICh0ZXh0T25seSkgeworICAgICAgICB2aWV3LT5zZXRQYWdlWm9vbUZhY3RvcigxLjBm
KTsKKyAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3IoMS4wZik7CisgICAgICAgIHZp
ZXctPnNldFBhZ2Vab29tRmFjdG9yKHpvb21GYWN0b3IpOworICAgIH0KKworICAgIGlmIChtX3pv
b21UZXh0T25seSAhPSB0ZXh0T25seSkgeworICAgICAgICBtX3pvb21UZXh0T25seSA9IHRleHRP
bmx5OworICAgICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwor
ICAgIH0KKworICAgIGlmIChvbGRab29tRmFjdG9yICE9IHpvb21GYWN0b3IpIHsKICAgICAgICAg
V2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyID0gV2ViRnJhbWVJbXBsOjpw
bHVnaW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUpOwogICAgICAgICBpZiAocGx1Z2luQ29udGFp
bmVyKQogICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT5wbHVnaW4oKS0+c2V0Wm9vbUZhY3Rv
cih6b29tRmFjdG9yLCB0ZXh0T25seSk7CiAgICAgICAgIG1fem9vbUxldmVsID0gem9vbUxldmVs
OwogICAgIH0KKwogICAgIHJldHVybiBtX3pvb21MZXZlbDsKIH0KIApJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNyw2ICszMzcsOCBAQCBwdWJsaWM6
CiAKICAgICBXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogc2VsZWN0UG9wdXAoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdFBvcHVwLmdldCgpOyB9CiAKKyAgICBib29sIHpvb21UZXh0T25seSgpIGNv
bnN0IHsgcmV0dXJuIG1fem9vbVRleHRPbmx5OyB9CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGV2ZW50IGxlYWRzIHRvIHNjcm9sbGluZy4KICAgICBzdGF0aWMgYm9vbCBtYXBLZXlDb2Rl
Rm9yU2Nyb2xsKGludCBrZXlDb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24qIHNjcm9sbERpcmVjdGlvbiwKQEAgLTQzMyw2ICs0
MzUsOCBAQCBwcml2YXRlOgogICAgIC8vIG1lYW4gem9vbSBpbiwgbmVnYXRpdmUgbnVtYmVycyBt
ZWFuIHpvb20gb3V0LgogICAgIGludCBtX3pvb21MZXZlbDsKIAorICAgIGJvb2wgbV96b29tVGV4
dE9ubHk7CisKICAgICBib29sIG1fY29udGV4dE1lbnVBbGxvd2VkOwogCiAgICAgYm9vbCBtX2Rv
aW5nRHJhZ0FuZERyb3A7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNjcxNjUpCisrKyBXZWJLaXQvZ3RrL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA5LTA5ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29y
ZSBvZiBjaG9vc2luZyBlaXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAg
ICBQcmVjdXJzb3IgdG8gPHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF96b29tX2xl
dmVsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19hcHBseV96b29tX2xldmVsKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19zZXRfZnVsbF9jb250ZW50X3pvb20pOgorCiAyMDEwLTA5LTA4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9u
IDY3MTE2KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwNzksNyArNDA3OSw4IEBAIGdmbG9hdCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3pv
b21fbGV2ZWwoV2UKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgcmV0
dXJuIHZpZXctPnpvb21GYWN0b3IoKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7CisgICAgcmV0dXJuIHByaXYtPnpvb21GdWxsQ29udGVudCA/IHZpZXct
PnBhZ2Vab29tRmFjdG9yKCkgOiB2aWV3LT50ZXh0Wm9vbUZhY3RvcigpOwogfQogCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfYXBwbHlfem9vbV9sZXZlbChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBnZmxvYXQgem9vbUxldmVsKQpAQCAtNDA5Myw3ICs0MDk0LDEwIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19hcHBseV96b29tX2wKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIHZpZXctPnNldFpv
b21GYWN0b3Ioem9vbUxldmVsLCBwcml2LT56b29tRnVsbENvbnRlbnQgPyBab29tUGFnZSA6IFpv
b21UZXh0T25seSk7CisgICAgaWYgKHByaXYtPnpvb21GdWxsQ29udGVudCkKKyAgICAgICAgdmll
dy0+c2V0UGFnZVpvb21GYWN0b3Ioem9vbUxldmVsKTsKKyAgICBlbHNlCisgICAgICAgIHZpZXct
PnNldFRleHRab29tRmFjdG9yKHpvb21MZXZlbCk7ICAgICAgICAKIH0KIAogLyoqCkBAIC00MTk2
LDggKzQyMDAsMjQgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Z1bGxfY29udGVudF96bwog
ICAgIGlmIChwcml2LT56b29tRnVsbENvbnRlbnQgPT0gem9vbUZ1bGxDb250ZW50KQogICAgICAg
cmV0dXJuOwogCisgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmlldyogdmlldyA9
IGZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgcmV0dXJuOworCisgICAgZ2Zs
b2F0IHpvb21MZXZlbCA9IHByaXYtPnpvb21GdWxsQ29udGVudCA/IHZpZXctPnBhZ2Vab29tRmFj
dG9yKCkgOiB2aWV3LT50ZXh0Wm9vbUZhY3RvcigpOworCiAgICAgcHJpdi0+em9vbUZ1bGxDb250
ZW50ID0gem9vbUZ1bGxDb250ZW50OwotICAgIHdlYmtpdF93ZWJfdmlld19hcHBseV96b29tX2xl
dmVsKHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19nZXRfem9vbV9sZXZlbCh3ZWJWaWV3KSk7Cisg
ICAgaWYgKHByaXYtPnpvb21GdWxsQ29udGVudCkgeworICAgICAgICB2aWV3LT5zZXRUZXh0Wm9v
bUZhY3RvcigxLjBmKTsKKyAgICAgICAgdmlldy0+c2V0UGFnZVpvb21GYWN0b3Ioem9vbUxldmVs
KTsKKyAgICB9IGVsc2UgeworICAgICAgICB2aWV3LT5zZXRQYWdlWm9vbUZhY3RvcigxLjBmKTsK
KyAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3Ioem9vbUxldmVsKTsgICAgICAgIAorICAg
IH0KIAogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJWaWV3KSwgImZ1bGwtY29udGVu
dC16b29tIik7CiB9CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjcxNjUpCisrKyBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA5LTA5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBv
ZiBjaG9vc2luZyBlaXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAgICBQ
cmVjdXJzb3IgdG8gPHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmlj
YXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFpvb21NdWx0aXBsaWVyOmlzVGV4dE9u
bHk6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3JlYWxab29tTXVsdGlwbGllcklzVGV4dE9ubHld
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOgorICAgICAg
ICBNb3ZlIHRyYWNraW5nIG9mIHRleHQgb25seSB6b29tIGhlcmUgZnJvbSBXZWJDb3JlLgorCiAy
MDEwLTA5LTA5ICBKb2huIFRoZXJyZWxsICA8anRoZXJyZWxsQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDY3MTE2KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE0MjcsNyArMTQyNyw2IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hh
bmdlZE5vdGlmaWNhdGlvbjoKICAgICBzZXR0aW5ncy0+c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVu
YWJsZWQoW3ByZWZlcmVuY2VzIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkXSk7CiAgICAgc2V0
dGluZ3MtPnNldExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGxv
Y2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKFtwcmVmZXJlbmNlcyBvZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWRdKTsKLSAgICBzZXR0aW5ncy0+c2V0Wm9vbU1vZGUoW3ByZWZlcmVu
Y2VzIHpvb21zVGV4dE9ubHldID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIHNldHRp
bmdzLT5zZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKFtwcmVmZXJlbmNlcyBqYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkXSk7CiAgICAgc2V0dGluZ3MtPnNldFhTU0F1ZGl0b3JFbmFi
bGVkKFtwcmVmZXJlbmNlcyBpc1hTU0F1ZGl0b3JFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNl
dEVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKCFXS0FwcFZlcnNpb25DaGVja0xlc3NU
aGFuKEAiY29tLmFwcGxlLmlXZWIiLCAtMSwgMi4xKSk7CkBAIC0xNDUwLDYgKzE0NDksMTAgQEAg
LSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOgogCiAgICAgLy8gQXBwbGlj
YXRpb24gQ2FjaGUgUHJlZmVyZW5jZXMgYXJlIHN0b3JlZCBvbiB0aGUgZ2xvYmFsIGNhY2hlIHN0
b3JhZ2UgbWFuYWdlciwgbm90IGluIFNldHRpbmdzLgogICAgIFtXZWJBcHBsaWNhdGlvbkNhY2hl
IHNldERlZmF1bHRPcmlnaW5RdW90YTpbcHJlZmVyZW5jZXMgYXBwbGljYXRpb25DYWNoZURlZmF1
bHRPcmlnaW5RdW90YV1dOworCisgICAgQk9PTCB6b29tc1RleHRPbmx5ID0gW3ByZWZlcmVuY2Vz
IHpvb21zVGV4dE9ubHldOworICAgIGlmIChfcHJpdmF0ZS0+em9vbXNUZXh0T25seSAhPSB6b29t
c1RleHRPbmx5KQorICAgICAgICBbc2VsZiBfc2V0Wm9vbU11bHRpcGxpZXI6X3ByaXZhdGUtPnpv
b21NdWx0aXBsaWVyIGlzVGV4dE9ubHk6em9vbXNUZXh0T25seV07CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSU1QIGdldE1ldGhvZChpZCBvLCBTRUwgcykKQEAgLTMyNzQsMTUgKzMyNzcsMjQgQEAgLSAo
dm9pZClfc2V0Wm9vbU11bHRpcGxpZXI6KGZsb2F0KW11bHRpcAogICAgIF9wcml2YXRlLT56b29t
TXVsdGlwbGllciA9IG11bHRpcGxpZXI7CiAKICAgICBBU1NFUlQoX3ByaXZhdGUtPnBhZ2UpOwot
ICAgIGlmIChfcHJpdmF0ZS0+cGFnZSkKLSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCktPnNldFpvb21Nb2RlKGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7Cisg
ICAgaWYgKF9wcml2YXRlLT56b29tc1RleHRPbmx5ICE9IGlzVGV4dE9ubHkpIHsKKyAgICAgICAg
X3ByaXZhdGUtPnpvb21zVGV4dE9ubHkgPSBpc1RleHRPbmx5OworICAgICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CisgICAgfQogCiAgICAgLy8g
RklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gcmV3b3JrIHRoaXMgY29kZSBzbyB0aGF0IF9wcml2
YXRlLT56b29tTXVsdGlwbGllciBkb2Vzbid0IGV4aXN0CiAgICAgLy8gYW5kIGluc3RlYWQgRnJh
bWVWaWV3Ojp6b29tRmFjdG9yIGlzIHVzZWQuCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFtzZWxm
IF9tYWluQ29yZUZyYW1lXTsKICAgICBpZiAoY29yZUZyYW1lKSB7Ci0gICAgICAgIGlmIChGcmFt
ZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHZpZXctPnNldFpv
b21GYWN0b3IobXVsdGlwbGllciwgaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdl
KTsKKyAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpKSB7Cisg
ICAgICAgICAgICBpZiAoX3ByaXZhdGUtPnpvb21zVGV4dE9ubHkpIHsKKyAgICAgICAgICAgICAg
ICB2aWV3LT5zZXRQYWdlWm9vbUZhY3RvcigxLjBmKTsKKyAgICAgICAgICAgICAgICB2aWV3LT5z
ZXRUZXh0Wm9vbUZhY3RvcihtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3IoMS4wZik7CisgICAgICAgICAgICAg
ICAgdmlldy0+c2V0UGFnZVpvb21GYWN0b3IobXVsdGlwbGllcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTMzMDMsNyArMzMxNSw3IEBAIC0gKEJPT0wpX3JlYWxa
b29tTXVsdGlwbGllcklzVGV4dE9ubHkKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAg
ICByZXR1cm4gTk87CiAgICAgCi0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LT56b29tTW9kZSgpID09IFpvb21UZXh0T25seTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnpvb21z
VGV4dE9ubHk7CiB9CiAKICNkZWZpbmUgTWluaW11bVpvb21NdWx0aXBsaWVyICAgICAgIDAuNWYK
SW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3
IEBAIEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgQk9PTCBhbGxv
d3NVbmRvOwogICAgICAgICAKICAgICBmbG9hdCB6b29tTXVsdGlwbGllcjsKKyAgICBCT09MIHpv
b21zVGV4dE9ubHk7CiAKICAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
OwogICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudDsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEubW0JKHJldmlzaW9uIDY3MTE2KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIC0gKGlkKWluaXQgCiAgICAgY3Nz
QW5pbWF0aW9uc1N1c3BlbmRlZCA9IE5POwogCiAgICAgem9vbU11bHRpcGxpZXIgPSAxOworICAg
IHpvb21zVGV4dE9ubHkgPSBOTzsKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAg
ICBkYXNoYm9hcmRCZWhhdmlvckFsbG93V2hlZWxTY3JvbGxpbmcgPSBZRVM7CkluZGV4OiBXZWJL
aXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDY3MTY1KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEwLTA5LTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVj
ZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBlaXRoZXIgdGV4dCB6b29t
IG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8gPHJkYXI6Ly9wcm9ibGVt
Lzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NTUyMgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OnNldFRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChRV2ViRnJhbWU6OnRleHRTaXpl
TXVsdGlwbGllcik6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IpOgorICAgICAg
ICAoUVdlYkZyYW1lOjp6b29tRmFjdG9yKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoK
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OlFXZWJGcmFtZVByaXZhdGUpOgorICAgICAgICBN
b3ZlIHRyYWNraW5nIG9mIHRleHQgb25seSB6b29tIGhlcmUgZnJvbSBXZWJDb3JlLgorCiAyMDEw
LTA5LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNjcxMTYpCisr
KyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDksNyAr
MTEwOSwxMCBAQCB2b2lkIFFXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKHFyCiAgICAg
aWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICB2aWV3LT5zZXRab29tRmFjdG9yKGZh
Y3RvciwgWm9vbVRleHRPbmx5KTsKKyAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0
ZShRV2ViU2V0dGluZ3M6Olpvb21UZXh0T25seSwgdHJ1ZSk7CisKKyAgICB2aWV3LT5zZXRQYWdl
Wm9vbUZhY3RvcigxLjBmKTsKKyAgICB2aWV3LT5zZXRUZXh0Wm9vbUZhY3RvcihmYWN0b3IpOwog
fQogCiAvKiEKQEAgLTExMjEsNyArMTEyNCw3IEBAIHFyZWFsIFFXZWJGcmFtZTo6dGV4dFNpemVN
dWx0aXBsaWVyKCkgY28KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAg
cmV0dXJuIHZpZXctPnpvb21GYWN0b3IoKTsKKyAgICByZXR1cm4gZC0+em9vbVRleHRPbmx5ID8g
dmlldy0+dGV4dFpvb21GYWN0b3IoKSA6IHZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CiB9CiAKIC8q
IQpAQCAtMTE0MCw3ICsxMTQzLDEwIEBAIHZvaWQgUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKHFy
ZWFsIGZhY3QKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZpZXctPnNl
dFpvb21GYWN0b3IoZmFjdG9yLCBwYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpKTsKKyAgICBp
ZiAoZC0+em9vbVRleHRPbmx5KQorICAgICAgICB2aWV3LT5zZXRUZXh0Wm9vbUZhY3RvcihmYWN0
b3IpOworICAgIGVsc2UKKyAgICAgICAgdmlldy0+c2V0UGFnZVpvb21GYWN0b3IoZmFjdG9yKTsK
IH0KIAogcXJlYWwgUVdlYkZyYW1lOjp6b29tRmFjdG9yKCkgY29uc3QKQEAgLTExNDksNyArMTE1
NSw3IEBAIHFyZWFsIFFXZWJGcmFtZTo6em9vbUZhY3RvcigpIGNvbnN0CiAgICAgaWYgKCF2aWV3
KQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHJldHVybiB2aWV3LT56b29tRmFjdG9yKCk7Cisg
ICAgcmV0dXJuIGQtPnpvb21UZXh0T25seSA/IHZpZXctPnRleHRab29tRmFjdG9yKCkgOiB2aWV3
LT5wYWdlWm9vbUZhY3RvcigpOwogfQogCiAvKiEKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZy
YW1lX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgJKHJldmlz
aW9uIDY3MTE2KQorKysgV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtYXJnaW5XaWR0aCgtMSkKICAg
ICAgICAgLCBtYXJnaW5IZWlnaHQoLTEpCiAgICAgICAgICwgaW5pdGlhbExheW91dENvbXBsZXRl
KGZhbHNlKQorICAgICAgICAsIHpvb21UZXh0T25seShmYWxzZSkKICAgICAgICAge30KICAgICB2
b2lkIGluaXQoUVdlYkZyYW1lKiBxZnJhbWUsIFFXZWJGcmFtZURhdGEqIGZyYW1lRGF0YSk7CiAg
ICAgdm9pZCBzZXRQYWdlKFFXZWJQYWdlKik7CkBAIC0xMDAsNiArMTAxLDcgQEAgcHVibGljOgog
ICAgIGludCBtYXJnaW5XaWR0aDsKICAgICBpbnQgbWFyZ2luSGVpZ2h0OwogICAgIGJvb2wgaW5p
dGlhbExheW91dENvbXBsZXRlOworICAgIGJvb2wgem9vbVRleHRPbmx5OwogfTsKIAogY2xhc3Mg
UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlIHsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NzE2NSkKKysrIFdl
YktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAt
MDktMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY29uc3RyYWlu
dCBpbiBXZWJDb3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0IHpvb20gb3IgZnVsbCBwYWdlIHpv
b20uCisgICAgICAgIFByZWN1cnNvciB0byA8cmRhcjovL3Byb2JsZW0vNzY2MDY1Nz4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTIyCisKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAo
V2ViVmlldzo6c2V0Wm9vbU11bHRpcGxpZXIpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAg
ICAgTW92ZSB0cmFja2luZyBvZiB0ZXh0IG9ubHkgem9vbSBoZXJlIGZyb20gV2ViQ29yZS4KKwog
MjAxMC0wOS0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA2NzExNikK
KysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw2ICszMjYs
NyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKICAgICAsIG1fdXNlQmFja0ZvcndhcmRMaXN0KHRydWUp
CiAgICAgLCBtX3VzZXJBZ2VudE92ZXJyaWRkZW4oZmFsc2UpCiAgICAgLCBtX3pvb21NdWx0aXBs
aWVyKDEuMGYpCisgICAgLCBtX3pvb21zVGV4dE9ubHkoZmFsc2UpCiAgICAgLCBtX21vdXNlQWN0
aXZhdGVkKGZhbHNlKQogICAgICwgbV9kcmFnRGF0YSgwKQogICAgICwgbV9jdXJyZW50Q2hhcmFj
dGVyQ29kZSgwKQpAQCAtMjkyNSwxMCArMjkyNiwyMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnNldFBhCiB2b2lkIFdlYlZpZXc6OnNldFpvb21NdWx0aXBsaWVyKGZsb2F0
IG11bHRpcGxpZXIsIGJvb2wgaXNUZXh0T25seSkKIHsKICAgICBtX3pvb21NdWx0aXBsaWVyID0g
bXVsdGlwbGllcjsKLSAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpvb21Nb2RlKGlzVGV4dE9u
bHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CisKKyAgICBpZiAobV96b29tc1RleHRPbmx5
ICE9IGlzVGV4dE9ubHkpIHsKKyAgICAgICAgbV96b29tc1RleHRPbmx5ID0gaXNUZXh0T25seTsK
KyAgICAgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKKyAgICB9
CisKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpKSB7CiAgICAg
ICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAg
IHZpZXctPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgaXNUZXh0T25seSA/IFpvb21UZXh0T25s
eSA6IFpvb21QYWdlKTsKKyAgICAgICAgICAgIGlmIChtX3pvb21zVGV4dE9ubHkpIHsKKyAgICAg
ICAgICAgICAgICB2aWV3LT5zZXRQYWdlWm9vbUZhY3RvcigxLjBmKTsKKyAgICAgICAgICAgICAg
ICB2aWV3LT5zZXRUZXh0Wm9vbUZhY3RvcihtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3IoMS4wZik7CisgICAg
ICAgICAgICAgICAgdmlldy0+c2V0UGFnZVpvb21GYWN0b3IobXVsdGlwbGllcik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTI5NDgsOCArMjk2MSw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFnZVMKIAogZmxvYXQgV2ViVmlldzo6em9v
bU11bHRpcGxpZXIoYm9vbCBpc1RleHRPbmx5KQogewotICAgIFpvb21Nb2RlIHpvb21Nb2RlID0g
aXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlOwotICAgIGlmICh6b29tTW9kZSAh
PSBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkpCisgICAgaWYgKGlzVGV4dE9ubHkgIT0g
bV96b29tc1RleHRPbmx5KQogICAgICAgICByZXR1cm4gMS4wZjsKICAgICByZXR1cm4gbV96b29t
TXVsdGlwbGllcjsKIH0KQEAgLTM3MzIsNyArMzc0NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6Y2FuTWEKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5k
ZXIqLywKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAg
Ym9vbCBjYW5Hcm93TW9yZSA9IGNhblpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2Rl
KCkgPT0gWm9vbVRleHRPbmx5KTsKKyAgICBib29sIGNhbkdyb3dNb3JlID0gY2FuWm9vbUluKG1f
em9vbXNUZXh0T25seSk7CiAgICAgKnJlc3VsdCA9IGNhbkdyb3dNb3JlID8gVFJVRSA6IEZBTFNF
OwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzc1NCw3ICszNzY2LDcgQEAgYm9vbCBXZWJWaWV3
OjpjYW5ab29tSW4oYm9vbCBpc1RleHRPbmx5KQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3OjptYWtlVGV4dExhcmdlciggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8q
c2VuZGVyKi8pCiB7Ci0gICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21N
b2RlKCkgPT0gWm9vbVRleHRPbmx5KTsKKyAgICByZXR1cm4gem9vbUluKG1fem9vbXNUZXh0T25s
eSk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6em9vbVBhZ2VJbigg
CkBAIC0zNzc1LDcgKzM3ODcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNhbk1hCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCiAgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIGJvb2wgY2FuU2hyaW5r
TW9yZSA9IGNhblpvb21PdXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpvb21U
ZXh0T25seSk7CisgICAgYm9vbCBjYW5TaHJpbmtNb3JlID0gY2FuWm9vbU91dChtX3pvb21zVGV4
dE9ubHkpOwogICAgICpyZXN1bHQgPSBjYW5TaHJpbmtNb3JlID8gVFJVRSA6IEZBTFNFOwogICAg
IHJldHVybiBTX09LOwogfQpAQCAtMzc5Nyw3ICszODA5LDcgQEAgYm9vbCBXZWJWaWV3OjpjYW5a
b29tT3V0KGJvb2wgaXNUZXh0T25seQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjptYWtlVGV4dFNtYWxsZXIoIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRl
ciovKQogewotICAgIHJldHVybiB6b29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUo
KSA9PSBab29tVGV4dE9ubHkpOworICAgIHJldHVybiB6b29tT3V0KG1fem9vbXNUZXh0T25seSk7
CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6em9vbVBhZ2VPdXQoIApA
QCAtNDYzNCw3ICs0NjQ2LDkgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0No
YW5nZQogICAgIGhyID0gcHJlZmVyZW5jZXMtPnpvb21zVGV4dE9ubHkoJmVuYWJsZWQpOwogICAg
IGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGluZ3MtPnNldFpv
b21Nb2RlKGVuYWJsZWQgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CisKKyAgICBpZiAobV96
b29tc1RleHRPbmx5ICE9IGVuYWJsZWQpCisgICAgICAgIHNldFpvb21NdWx0aXBsaWVyKG1fem9v
bU11bHRpcGxpZXIsIGVuYWJsZWQpOwogCiAgICAgc2V0dGluZ3MtPnNldFNob3dzVVJMc0luVG9v
bFRpcHMoZmFsc2UpOwogICAgIHNldHRpbmdzLT5zZXRGb3JjZUZUUERpcmVjdG9yeUxpc3Rpbmdz
KHRydWUpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDY3MTE2KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk5NSw2ICs5OTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV1RGOjpT
dHJpbmcgbV91c2VyQWdlbnRDdXN0b207CiAgICAgV1RGOjpTdHJpbmcgbV91c2VyQWdlbnRTdGFu
ZGFyZDsKICAgICBmbG9hdCBtX3pvb21NdWx0aXBsaWVyOworICAgIGJvb2wgbV96b29tc1RleHRP
bmx5OwogICAgIFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKICAgICBXVEY6OlN0cmlu
ZyBtX2FwcGxpY2F0aW9uTmFtZTsKICAgICBib29sIG1fbW91c2VBY3RpdmF0ZWQ7CkluZGV4OiBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzE2NSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA5LTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBlaXRoZXIg
dGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8gPHJkYXI6
Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTUyMgorCisgICAgICAgIFVwZGF0ZSBmb3IgY2hhbmdlcyB0byB0aGUgQnVu
ZGxlIEFQSSB0byBhbGxvdyBzZXBhcmF0ZSBjb250cm9sIG9mIHBhZ2UgYW5kIHRleHQgem9vbQor
ICAgICAgICBsZXZlbHMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRp
bmdDb250cm9sbGVyOjp0ZXh0Wm9vbUluKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6dGV4dFpvb21PdXQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9s
bGVyOjp6b29tUGFnZUluKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
em9vbVBhZ2VPdXQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdl
OjpyZXNldCk6CisKIDIwMTAtMDktMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NzExOS4KSW5k
ZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NjcxMTYpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwzMCArOTIsMzgg
QEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpsZWFwRm9yd2FyZAogCiB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnRleHRab29tSW4oKQogewotICAgIFdLQnVuZGxlUGFnZVNldFpv
b21Nb2RlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwga1dLQnVuZGxl
UGFnZVpvb21Nb2RlVGV4dE9ubHkpOwotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBXS0J1bmRsZVBh
Z2VHZXRab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7
Ci0gICAgV0tCdW5kbGVQYWdlU2V0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
cGFnZSgpLT5wYWdlKCksIHpvb21GYWN0b3IgKiBab29tTXVsdGlwbGllclJhdGlvKTsKKyAgICAv
LyBFbnN1cmUgcGFnZSB6b29tIGlzIHJlc2V0LgorICAgIFdLQnVuZGxlUGFnZVNldFBhZ2Vab29t
RmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgMS4wZik7CisK
KyAgICBmbG9hdCB6b29tRmFjdG9yID0gV0tCdW5kbGVQYWdlR2V0VGV4dFpvb21GYWN0b3IoSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBXS0J1bmRsZVBhZ2VT
ZXRUZXh0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCks
IHpvb21GYWN0b3IgKiBab29tTXVsdGlwbGllclJhdGlvKTsKIH0KIAogdm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjp0ZXh0Wm9vbU91dCgpCiB7Ci0gICAgV0tCdW5kbGVQYWdlU2V0Wm9vbU1v
ZGUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBrV0tCdW5kbGVQYWdl
Wm9vbU1vZGVUZXh0T25seSk7Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9IFdLQnVuZGxlUGFnZUdl
dFpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKLSAg
ICBXS0J1bmRsZVBhZ2VTZXRab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
KCktPnBhZ2UoKSwgem9vbUZhY3RvciAvIFpvb21NdWx0aXBsaWVyUmF0aW8pOworICAgIC8vIEVu
c3VyZSBwYWdlIHpvb20gaXMgcmVzZXQuCisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0
b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCAxLjBmKTsKKworICAg
IGZsb2F0IHpvb21GYWN0b3IgPSBXS0J1bmRsZVBhZ2VHZXRUZXh0Wm9vbUZhY3RvcihJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIFdLQnVuZGxlUGFnZVNldFRl
eHRab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgem9v
bUZhY3RvciAvIFpvb21NdWx0aXBsaWVyUmF0aW8pOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6Onpvb21QYWdlSW4oKQogewotICAgIFdLQnVuZGxlUGFnZVNldFpvb21Nb2RlKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwga1dLQnVuZGxlUGFnZVpvb21N
b2RlUGFnZSk7Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9IFdLQnVuZGxlUGFnZUdldFpvb21GYWN0
b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKLSAgICBXS0J1bmRs
ZVBhZ2VTZXRab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KSwgem9vbUZhY3RvciAqIFpvb21NdWx0aXBsaWVyUmF0aW8pOworICAgIC8vIEVuc3VyZSB0ZXh0
IHpvb20gaXMgcmVzZXQuCisgICAgV0tCdW5kbGVQYWdlU2V0VGV4dFpvb21GYWN0b3IoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCAxLjBmKTsKKworICAgIGZsb2F0IHpv
b21GYWN0b3IgPSBXS0J1bmRsZVBhZ2VHZXRQYWdlWm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIFdLQnVuZGxlUGFnZVNldFBhZ2Vab29tRmFj
dG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgem9vbUZhY3RvciAv
IFpvb21NdWx0aXBsaWVyUmF0aW8pOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6
Onpvb21QYWdlT3V0KCkKIHsKLSAgICBXS0J1bmRsZVBhZ2VTZXRab29tTW9kZShJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIGtXS0J1bmRsZVBhZ2Vab29tTW9kZVBhZ2Up
OwotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBXS0J1bmRsZVBhZ2VHZXRab29tRmFjdG9yKEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgV0tCdW5kbGVQYWdlU2V0
Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpvb21G
YWN0b3IgLyBab29tTXVsdGlwbGllclJhdGlvKTsKKyAgICAvLyBFbnN1cmUgdGV4dCB6b29tIGlz
IHJlc2V0LgorICAgIFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgMS4wZik7CisKKyAgICBmbG9hdCB6b29tRmFjdG9y
ID0gV0tCdW5kbGVQYWdlR2V0UGFnZVpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlWm9vbUZhY3RvcihJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpvb21GYWN0b3IgLyBab29tTXVs
dGlwbGllclJhdGlvKTsKIH0KIAogLy8gT2JqZWN0IENyZWF0aW9uCkluZGV4OiBXZWJLaXRUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU4LDggKzE1OCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpyZXNldCgpCiB7CiAgICAgV0tCdW5kbGVQYWdlQ2xlYXJNYWluRnJhbWVOYW1lKG1fcGFnZSk7
CiAKLSAgICBXS0J1bmRsZVBhZ2VTZXRab29tRmFjdG9yKG1fcGFnZSwgMS4wZik7Ci0gICAgV0tC
dW5kbGVQYWdlU2V0Wm9vbU1vZGUobV9wYWdlLCBrV0tCdW5kbGVQYWdlWm9vbU1vZGVQYWdlKTsK
KyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2UsIDEuMGYpOworICAgIFdL
QnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKG1fcGFnZSwgMS4wZik7CiB9CiAKIC8vIExvYWRl
ciBDbGllbnQgQ2FsbGJhY2tzCg==
</data>
<flag name="review"
          id="56381"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67229</attachid>
            <date>2010-09-10 13:50:38 -0700</date>
            <delta_ts>2010-09-10 17:55:59 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patchZoom2.diff</filename>
            <type>text/plain</type>
            <size>58097</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzIyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjIgQEAKKzIwMTAtMDktMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgY29uc3RyYWludCBpbiBXZWJDb3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0
IHpvb20gb3IgZnVsbCBwYWdlIHpvb20uCisgICAgICAgIFByZWN1cnNvciB0byA8cmRhcjovL3By
b2JsZW0vNzY2MDY1Nz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ1NTIyCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5w
cm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgWm9vbU1v
ZGUuaAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZSk6Cisg
ICAgICAgIFJlbW92ZSB1c2VzIG9mIHNob3VsZEFwcGx5VGV4dFpvb20oKSwgaXQgaGFkIHR1cm5l
ZCBpbnRvIGp1c3QgYSBjb21wYXJlIHRvIDEuMGYuCisKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3Jab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2V0U2Nyb2xsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbFRvcCk6CisgICAgICAgIENvbnZlcnQgdGhl
c2UgdG8gdXNlIHRoZSBleHBsaWNpdCBwYWdlWm9vbUZhY3RvcigpIGZ1bmN0aW9uLCBpdCBtYWRl
IG5vIHNlbnNlIGZvciB0ZXh0IHpvb20KKyAgICAgICAgYW55d2F5LgorCisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICBSZW1vdmUgaW5jbHVkZSBvZiBab29tTW9kZS5oCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRQYWdlWm9v
bUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRUZXh0Wm9vbUZhY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNldFBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2V0VGV4dFpvb21GYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRQ
YWdlQW5kVGV4dFpvb21GYWN0b3JzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWdlWm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnRleHRab29tRmFjdG9yKToKKyAgICAgICAgQ2hhbmdlIEZyYW1lVmll
dyB0byBzdG9yZSB0d28gdmFsdWVzIGZvciB6b29tLCBvbmUgZm9yIHBhZ2Ugem9vbSBhbmQgb25l
IGZvciB0ZXh0IHpvb20uCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5o
OgorICAgICAgICBSZW1vdmVkIHpvb20gbW9kZS4KKworICAgICAgICAqIHBhZ2UvWm9vbU1vZGUu
aDogUmVtb3ZlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6Onpvb21GYWN0b3IpOgorICAgICAgICBSZW1vdmUgbm93
IHVubmVjZXNzYXJ5IGNhbGwgdG8gc2hvdWxkQXBwbHlQYWdlWm9vbSBzaW5jZSBpdCB3aWxsIGJl
IDEgaWYgaXQgc2hvdWxkCisgICAgICAgIGJlIGlnbm9yZWQuCisKKyAgICAgICAgKiBzdmcvU1ZH
U1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzZXRDdXJy
ZW50U2NhbGUpOgorICAgICAgICBVc2UgZXhwbGljaXQgc2V0UGFnZVpvb21GYWN0b3IgZnVuY3Rp
b24uCisKIDIwMTAtMDktMTAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBRdCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTg3Miw3ICsxODcyLDYgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAJV2Vi
Q29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwK
LQlXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgg
XAogCVdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTM0MSw3ICszNDEsNiBAQCBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tl
cjlzZXRDbGllbnRFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjEwc2V0Rm9jdXNlZEVi
CiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1c2V0Rm9jdXNlZEZyYW1lRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNXNl
dEluaXRpYWxGb2N1c0VOU18xNEZvY3VzRGlyZWN0aW9uRVBOU18xM0tleWJvYXJkRXZlbnRFCi1f
X1pOSzdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxOGZvY3VzZWRPck1haW5GcmFtZUV2CiBfX1pO
N1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjlzZXRBY3RpdmVFYgogX19aTjdXZWJDb3JlMTVHcmFw
aGljc0NvbnRleHQxMnNldEZpbGxDb2xvckVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBf
X1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfOUZsb2F0UmVjdEUKQEAgLTY3
MiwyMCArNjcxLDE5IEBAIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUUK
IF9fWk43V2ViQ29yZThEb2N1bWVudDE3Z2V0Rm9jdXNhYmxlTm9kZXNFUk4zV1RGNlZlY3RvcklO
UzFfNlJlZlB0cklOU180Tm9kZUVFRUxtMEVFRQogX19aTjdXZWJDb3JlOERvY3VtZW50MThjcmVh
dGVXcmFwcGVyQ2FjaGVFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MTlhY2Nlc3NTVkdFeHRlbnNpb25zRXYKK19fWk43V2ViQ29yZThEb2N1bWVudDIwc3R5bGVT
ZWxlY3RvckNoYW5nZWRFTlNfMjNTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZ0UKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDIyY3JlYXRlRG9jdW1lbnRGcmFnbWVudEV2CiBfX1pON1dlYkNvcmU4RG9jdW1l
bnQyNGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlzdGVuZXJF
CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyNHNldFNob3VsZENyZWF0ZVJlbmRlcmVyc0ViCitfX1pO
N1dlYkNvcmU4RG9jdW1lbnQyNXNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNFdgogX19aTjdXZWJD
b3JlOERvY3VtZW50MjZwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VpUk5TXzdJbnRTaXplRVJp
UzNfUzNfUzNfCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyN3JlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0
ZW5lckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlzdGVuZXJFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQz
NnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0V2Ci1fX1pON1dlYkNvcmU4RG9j
dW1lbnQyNXNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNFdgotX19aTjdXZWJDb3JlOERvY3VtZW50
MjBzdHlsZVNlbGVjdG9yQ2hhbmdlZEVOU18yM1N0eWxlU2VsZWN0b3JVcGRhdGVGbGFnRQogX19a
TjdXZWJDb3JlOERvY3VtZW50NGhlYWRFdgogX19aTjdXZWJDb3JlOEZvcm1EYXRhNmNyZWF0ZUVQ
S3ZtCiBfX1pON1dlYkNvcmU4Rm9ybURhdGFEMUV2CiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVS
SzhfTlNQb2ludAogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NE5vZGVFRUVpCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxMXNldFpvb21Nb2RlRU5TXzhab29tTW9k
ZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRV
c2VzUGFnZUNhY2hlRWIKQEAgLTczNyw5ICs3MzUsOSBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3Mz
MXNldFNocmlua3NTdGFuZGFsCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMnNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczMyc2V0TmVlZHNBZG9i
ZUZyYW1lUmVsb2FkaW5nUXVpcmtFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzNzZXREb3dubG9h
ZGFibGVCaW5hcnlGb250c0VuYWJsZWRFYgotX19aTjdXZWJDb3JlOFNldHRpbmdzMzVzZXRFbmZv
cmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzNHNl
dExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MzVzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0ViCitfX1pON1dlYkNvcmU4U2V0
dGluZ3MzNXNldEVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczM1c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMzVzZXRUcmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MzNnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZEViCkBAIC03NjEsNyArNzU5LDYgQEAgX19aTjdXZWJDb3JlOUZyYW1lVHJlZTdzZXROYW1lRVJL
TjNXVEYxMgogX19aTjdXZWJDb3JlOUZyYW1lVHJlZTljbGVhck5hbWVFdgogX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzExZm9yY2VMYXlvdXRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEyc2V0TWVk
aWFUeXBlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzEzc2V0Wm9vbUZh
Y3RvckVmTlNfOFpvb21Nb2RlRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0YWRqdXN0Vmlld1Np
emVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0TWFyZ2luV2lkdGhFaQogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE0c2V0TmVlZHNMYXlvdXRFdgpAQCAtNzY5LDE1ICs3NjYsMTggQEAgX19a
TjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0VHJhbnNwYXJlbnRFYgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzE1c2V0TWFyZ2luSGVpZ2h0RWkKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNmFkanVzdFBh
Z2VIZWlnaHRFUGZmZmYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNnNldFBhaW50QmVoYXZpb3JF
agorX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0UGFnZVpvb21GYWN0b3JFZgorX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE3c2V0VGV4dFpvb21GYWN0b3JFZgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMGVudGVyQ29t
cG9zaXRpbmdNb2RlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBh
aW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRU5T
XzVDb2xvckUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyM3VwZGF0ZUNhbkhhdmVTY3JvbGxiYXJz
RXYKLV9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRS
ZWN1cnNpdmVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0
aW9uRVJLTlNfOUZsb2F0U2l6ZUVmTlNfNUZyYW1lMTlBZGp1c3RWaWV3U2l6ZU9yTm90RQorX19a
TjdXZWJDb3JlOUZyYW1lVmlldzI1c2V0UGFnZUFuZFRleHRab29tRmFjdG9yc0VmZgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzI5c3luY0NvbXBvc2l0aW5nU3RhdGVSZWN1cnNpdmVFdgorX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9y
bVdpZGdldEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRQogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUE5TXzVGcmFtZUVSS05TXzdJbnRTaXplRQpAQCAt
ODg5LDkgKzg4OSw5IEBAIF9fWk5LN1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwY3VycmVudEtleWIK
IF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNv
cmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNv
cmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
N2NoaWxkQXRFagogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVOU18xMEZsb2F0
UG9pbnRFYmIKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoKIF9fWk5LN1dl
YkNvcmUxMlJlbmRlcldpZGdldDE0d2luZG93Q2xpcFJlY3RFdgogX19aTks3V2ViQ29yZTEyU2hh
cmVkQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyNHNpemVFdgpAQCAt
OTM0LDYgKzkzNCw3IEBAIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXgK
IF9fWk5LN1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTBjb25uZWN0aW9uRXYKIF9fWk5LN1dlYkNv
cmUxNFJlc291cmNlTG9hZGVyMTFmcmFtZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbjVlcXVhbEVQS1MwXworX19aTks3V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMThmb2N1
c2VkT3JNYWluRnJhbWVFdgogX19aTks3V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVwbGF0Zm9y
bUNvbnRleHRFdgogX19aTks3V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTZwYWludGluZ0Rpc2Fi
bGVkRXYKIF9fWk5LN1dlYkNvcmUxNVByb2dyZXNzVHJhY2tlcjE3ZXN0aW1hdGVkUHJvZ3Jlc3NF
dgpAQCAtMTEzOCw2ICsxMTM5LDcgQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtRW5kCiBfd2tTaWdu
YWxDRlJlYWRTdHJlYW1FcnJvcgogX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMKIAorCiAj
aWYgRU5BQkxFKDNEX1JFTkRFUklORykKIF9XZWJDb3JlSGFzM0RSZW5kZXJpbmcKICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNjAsNyArMjE2MCw2IEBACiAgICAgICAgICAgICAncGFnZS9Xb3JrZXJOYXZp
Z2F0b3IuaCcsCiAgICAgICAgICAgICAncGFnZS9YU1NBdWRpdG9yLmNwcCcsCiAgICAgICAgICAg
ICAncGFnZS9YU1NBdWRpdG9yLmgnLAotICAgICAgICAgICAgJ3BhZ2UvWm9vbU1vZGUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5w
cm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjcxMTkpCisr
KyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgwLDcgKzE2ODAsNiBA
QCBIRUFERVJTICs9IFwKICAgICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmggXAogICAgIHBhZ2UvV29y
a2VyTmF2aWdhdG9yLmggXAogICAgIHBhZ2UvWFNTQXVkaXRvci5oIFwKLSAgICBwYWdlL1pvb21N
b2RlLmggXAogICAgIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCBcCiAgICAgcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDY3MTE5KQor
KysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjMzMjQsMTAgKzIzMzI0LDYgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVk
aXRvci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGFnZVxab29tTW9kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXIN
CiAJCQkJTmFtZT0id2luIg0KIAkJCQk+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMzksNyArNTEzOSw2
IEBACiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMx
MUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3
NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3
NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAxMTM2
RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1Nj
cmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3Bw
ICovOyB9OwogCQlDRTRDMDBFNjEwRjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0QzAw
RTUxMEY2RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuaCAqLzsgfTsKIAkJQ0U1
NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEwMTZEOUE2MDA4
QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA5NzQsNyArMTA5NzMsNiBAQAogCQlDRTAyRjBD
MzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1
MzMgLyogWm9vbU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0Ez
OEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRNTE5vU2NyaXB0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNEMwMEU1MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2RDlBNjAwOEI0NEM4
IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjc1OSw3ICsxMjc1Nyw2IEBACiAJCQkJRTEyNzFBNTEwRUVFQ0QxQzAwRjYxMjEzIC8qIFdv
cmtlck5hdmlnYXRvci5pZGwgKi8sCiAJCQkJOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhT
U0F1ZGl0b3IuY3BwICovLAogCQkJCTk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRp
dG9yLmggKi8sCi0JCQkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IHBhZ2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MjAzNzYsNyArMjAzNzMsNiBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xU
UHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkg
LyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0RDZF
MDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0UxNzJFMDExMTM2
RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEZGMkE1RTEx
RjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwQjU2
MTcxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQTk3OTE3MTIxNUQwNTUwMDVDNDg1QyAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY3MTE5KQorKysg
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNTEs
MTAgKzQxNTEsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAg
ICAgICAgIGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUp
KSB7CiAgICAgICAgICAgICBkb3VibGUgbXVsdGlwbGllciA9IHpvb21GYWN0b3I7CiAgICAgICAg
ICAgICBpZiAobV9zdHlsZS0+dGV4dFNpemVBZGp1c3QoKSkgewotICAgICAgICAgICAgICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2NoZWNrZXIubV9kb2N1bWVudC0+dmlldygpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh2aWV3LT5zaG91bGRBcHBseVRleHRab29tKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IHZpZXctPnRleHRab29tRmFjdG9yKCk7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBt
X2NoZWNrZXIubV9kb2N1bWVudC0+dmlldygpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBs
aWVyICo9IHZpZXctPnRleHRab29tRmFjdG9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9y
TGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgIG11bHRpcGxpZXIpLCBGaXhlZCk7
CiAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpCkBAIC02MjMxLDcgKzYyMjksNyBAQCBmbG9hdCBDU1NTdHlsZVNlbGVjdG9yOjpnZXRD
b21wdXRlZFNpemVGCiAgICAgZmxvYXQgem9vbUZhY3RvciA9IDEuMGY7CiAgICAgaWYgKCF1c2VT
Vkdab29tUnVsZXMpIHsKICAgICAgICAgem9vbUZhY3RvciA9IHN0eWxlLT5lZmZlY3RpdmVab29t
KCk7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+dmlldygpICYmIGRvY3VtZW50LT52aWV3KCktPnNo
b3VsZEFwcGx5VGV4dFpvb20oKSkKKyAgICAgICAgaWYgKGRvY3VtZW50LT52aWV3KCkpCiAgICAg
ICAgICAgICB6b29tRmFjdG9yICo9IGRvY3VtZW50LT52aWV3KCktPnRleHRab29tRmFjdG9yKCk7
CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gNjcxMTkp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjU0LDcgKzI1NCw3IEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRWTGluayhjb25zdCBTdHIK
IAogc3RhdGljIGludCBhZGp1c3RGb3Jab29tKGludCB2YWx1ZSwgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcpCiB7Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lVmlldy0+em9vbUZhY3RvcigpOwor
ICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZVZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CiAgICAg
aWYgKHpvb21GYWN0b3IgPT0gMSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIC8vIE5lZWRl
ZCBiZWNhdXNlIG9mIHRydW5jYXRpb24gKHJhdGhlciB0aGFuIHJvdW5kaW5nKSB3aGVuIHNjYWxp
bmcgdXAuCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9s
bExlZnQoaW50IAogICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50LT52aWV3KCk7CiAgICAg
aWYgKCF2aWV3KQogICAgICAgICByZXR1cm47Ci0gICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24o
SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50PihzY3JvbGxMZWZ0ICogdmlldy0+em9vbUZhY3Rvcigp
KSwgdmlldy0+c2Nyb2xsWSgpKSk7CisgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9p
bnQoc3RhdGljX2Nhc3Q8aW50PihzY3JvbGxMZWZ0ICogdmlldy0+cGFnZVpvb21GYWN0b3IoKSks
IHZpZXctPnNjcm9sbFkoKSkpOwogfQogCiBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxUb3Ao
KSBjb25zdApAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3Jv
bGxUb3AoaW50IHMKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOwogICAg
IGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwotICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9u
KEludFBvaW50KHZpZXctPnNjcm9sbFgoKSwgc3RhdGljX2Nhc3Q8aW50PihzY3JvbGxUb3AgKiB2
aWV3LT56b29tRmFjdG9yKCkpKSk7CisgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9p
bnQodmlldy0+c2Nyb2xsWCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNjcm9sbFRvcCAqIHZpZXctPnBh
Z2Vab29tRmFjdG9yKCkpKSk7CiB9CiAKIGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbEhlaWdo
dCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlNjcm9sbEJlaGF2
aW9yLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVzZXJT
Y3JpcHRUeXBlcy5oIgotI2luY2x1ZGUgIlpvb21Nb2RlLmgiCiAKICNpZiBQTEFURk9STShXSU4p
CiAjaW5jbHVkZSAiRnJhbWVXaW4uaCIKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA2NzEx
OSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5
ICsyOSw5IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5
bGVTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTExMSw3ICsxMTEs
NyBAQCBzdHJ1Y3QgU2NoZWR1bGVkRXZlbnQgOiBOb25jb3B5YWJsZSB7CiAgICAgUmVmUHRyPE5v
ZGU+IG1fZXZlbnRUYXJnZXQ7CiB9OwogCi1zdGF0aWMgaW5saW5lIGZsb2F0IHBhcmVudFpvb21G
YWN0b3IoRnJhbWUqIGZyYW1lKQorc3RhdGljIGlubGluZSBmbG9hdCBwYXJlbnRQYWdlWm9vbUZh
Y3RvcihGcmFtZSogZnJhbWUpCiB7CiAgICAgRnJhbWUqIHBhcmVudCA9IGZyYW1lLT50cmVlKCkt
PnBhcmVudCgpOwogICAgIGlmICghcGFyZW50KQpAQCAtMTE5LDcgKzExOSwxOCBAQCBzdGF0aWMg
aW5saW5lIGZsb2F0IHBhcmVudFpvb21GYWN0b3IoRnJhCiAgICAgRnJhbWVWaWV3KiBwYXJlbnRW
aWV3ID0gcGFyZW50LT52aWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAgICByZXR1
cm4gMTsKLSAgICByZXR1cm4gcGFyZW50Vmlldy0+em9vbUZhY3RvcigpOworICAgIHJldHVybiBw
YXJlbnRWaWV3LT5wYWdlWm9vbUZhY3RvcigpOworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IHBh
cmVudFRleHRab29tRmFjdG9yKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBGcmFtZSogcGFyZW50ID0g
ZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVy
biAxOworICAgIEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudC0+dmlldygpOworICAgIGlm
ICghcGFyZW50VmlldykKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIHBhcmVudFZpZXct
PnRleHRab29tRmFjdG9yKCk7CiB9CiAKIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFt
ZSkKQEAgLTE0NSw3ICsxNTYsOSBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSogZnJhbWUp
CiAgICAgLCBtX2RlZmVyU2V0TmVlZHNMYXlvdXRzKDApCiAgICAgLCBtX3NldE5lZWRzTGF5b3V0
V2FzRGVmZXJyZWQoZmFsc2UpCiAgICAgLCBtX3Njcm9sbENvcm5lcigwKQotICAgICwgbV96b29t
RmFjdG9yKHBhcmVudFpvb21GYWN0b3IoZnJhbWUpKQorICAgICwgbV9wYWdlWm9vbUZhY3Rvcihw
YXJlbnRQYWdlWm9vbUZhY3RvcihmcmFtZSkpCisgICAgLCBtX3RleHRab29tRmFjdG9yKHBhcmVu
dFRleHRab29tRmFjdG9yKGZyYW1lKSkKKwogewogICAgIGluaXQoKTsKIH0KQEAgLTIyNzUsMjgg
KzIyODgsMjEgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbgogICAg
IHJldHVybiBwYXJlbnRQb2ludDsKIH0KIAotYm9vbCBGcmFtZVZpZXc6OnNob3VsZEFwcGx5VGV4
dFpvb20oKSBjb25zdAordm9pZCBGcmFtZVZpZXc6OnNldFBhZ2Vab29tRmFjdG9yKGZsb2F0IGZh
Y3RvcikKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IDEpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPnNldHRpbmdz
KCktPnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5OworICAgIHNldFBhZ2VBbmRUZXh0Wm9vbUZh
Y3RvcnMoZmFjdG9yLCBtX3RleHRab29tRmFjdG9yKTsKIH0KIAotYm9vbCBGcmFtZVZpZXc6OnNo
b3VsZEFwcGx5UGFnZVpvb20oKSBjb25zdAordm9pZCBGcmFtZVZpZXc6OnNldFRleHRab29tRmFj
dG9yKGZsb2F0IGZhY3RvcikKIHsKLSAgICBpZiAobV96b29tRmFjdG9yID09IDEpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmIHBh
Z2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVBhZ2U7CisgICAgc2V0UGFnZUFuZFRl
eHRab29tRmFjdG9ycyhtX3BhZ2Vab29tRmFjdG9yLCBmYWN0b3IpOwogfQogCi12b2lkIEZyYW1l
Vmlldzo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjZW50LCBab29tTW9kZSBtb2RlKQordm9pZCBG
cmFtZVZpZXc6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21GYWN0b3Is
IGZsb2F0IHRleHRab29tRmFjdG9yKQogeworICAgIGlmIChtX3BhZ2Vab29tRmFjdG9yID09IHBh
Z2Vab29tRmFjdG9yICYmIG1fdGV4dFpvb21GYWN0b3IgPT0gdGV4dFpvb21GYWN0b3IpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MzA0LDkgKzIzMTAsNiBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJj
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV96b29tRmFjdG9y
ID09IHBlcmNlbnQgJiYgcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBtb2RlKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMjIsMjggKzIz
MjUsMjcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFpvb21GYWN0b3IoZmxvYXQgcGVyYwogICAgIH0K
ICNlbmRpZgogCi0gICAgaWYgKG1vZGUgPT0gWm9vbVBhZ2UpIHsKKyAgICBpZiAobV9wYWdlWm9v
bUZhY3RvciAhPSBwYWdlWm9vbUZhY3RvcikgewogICAgICAgICAvLyBVcGRhdGUgdGhlIHNjcm9s
bCBwb3NpdGlvbiB3aGVuIGRvaW5nIGEgZnVsbCBwYWdlIHpvb20sIHNvIHRoZSBjb250ZW50IHN0
YXlzIGluIHJlbGF0aXZlbHkgdGhlIHNhbWUgcG9zaXRpb24uCiAgICAgICAgIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uID0gdGhpcy0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICAgICAgZmxvYXQgcGVy
Y2VudERpZmZlcmVuY2UgPSAocGVyY2VudCAvIG1fem9vbUZhY3Rvcik7CisgICAgICAgIGZsb2F0
IHBlcmNlbnREaWZmZXJlbmNlID0gKHBhZ2Vab29tRmFjdG9yIC8gbV9wYWdlWm9vbUZhY3Rvcik7
CiAgICAgICAgIHNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KHNjcm9sbFBvc2l0aW9uLngoKSAq
IHBlcmNlbnREaWZmZXJlbmNlLCBzY3JvbGxQb3NpdGlvbi55KCkgKiBwZXJjZW50RGlmZmVyZW5j
ZSkpOwogICAgIH0KIAotICAgIG1fem9vbUZhY3RvciA9IHBlcmNlbnQ7Ci0gICAgcGFnZS0+c2V0
dGluZ3MoKS0+c2V0Wm9vbU1vZGUobW9kZSk7CisgICAgbV9wYWdlWm9vbUZhY3RvciA9IHBhZ2Va
b29tRmFjdG9yOworICAgIG1fdGV4dFpvb21GYWN0b3IgPSB0ZXh0Wm9vbUZhY3RvcjsKIAogICAg
IGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKICAgICBmb3IgKEZyYW1lKiBj
aGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIGNoaWxk
VmlldyA9IGNoaWxkLT52aWV3KCkpCi0gICAgICAgICAgICBjaGlsZFZpZXctPnNldFpvb21GYWN0
b3IobV96b29tRmFjdG9yLCBtb2RlKTsKKyAgICAgICAgICAgIGNoaWxkVmlldy0+c2V0UGFnZUFu
ZFRleHRab29tRmFjdG9ycyhtX3BhZ2Vab29tRmFjdG9yLCBtX3RleHRab29tRmFjdG9yKTsKICAg
ICB9CiAKICAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVy
KCktPm5lZWRzTGF5b3V0KCkgJiYgZGlkRmlyc3RMYXlvdXQoKSkKICAgICAgICAgbGF5b3V0KCk7
CiB9CiAKLQogLy8gTm9ybWFsIGRlbGF5CiB2b2lkIEZyYW1lVmlldzo6c2V0UmVwYWludFRocm90
dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheShkb3VibGUgcCkKIHsKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJl
dmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTcsMTIgKzIxNywxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZyYW1lVmlld1Njcm9s
bENvcm5lcihSZW5kZXJTY3JvbGxiYXJQYXJ0KiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsQ29ybmVyID09IHNjcm9sbENvcm5lcjsgfQogICAgIHZvaWQgaW52YWxpZGF0ZVNj
cm9sbENvcm5lcigpOwogCi0gICAgdm9pZCBzZXRab29tRmFjdG9yKGZsb2F0IHNjYWxlLCBab29t
TW9kZSk7Ci0gICAgZmxvYXQgem9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbUZhY3Rv
cjsgfQotICAgIGJvb2wgc2hvdWxkQXBwbHlUZXh0Wm9vbSgpIGNvbnN0OwotICAgIGJvb2wgc2hv
dWxkQXBwbHlQYWdlWm9vbSgpIGNvbnN0OwotICAgIGZsb2F0IHBhZ2Vab29tRmFjdG9yKCkgY29u
c3QgeyByZXR1cm4gc2hvdWxkQXBwbHlQYWdlWm9vbSgpID8gbV96b29tRmFjdG9yIDogMS4wZjsg
fQotICAgIGZsb2F0IHRleHRab29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gc2hvdWxkQXBwbHlU
ZXh0Wm9vbSgpID8gbV96b29tRmFjdG9yIDogMS4wZjsgfQorICAgIHZvaWQgc2V0UGFnZVpvb21G
YWN0b3IoZmxvYXQgZmFjdG9yKTsKKyAgICBmbG9hdCBwYWdlWm9vbUZhY3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZVpvb21GYWN0b3I7IH0KKyAgICB2b2lkIHNldFRleHRab29tRmFjdG9yKGZs
b2F0IGZhY3Rvcik7CisgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IoKSBjb25zdCAgeyByZXR1cm4g
bV90ZXh0Wm9vbUZhY3RvcjsgfQorICAgIHZvaWQgc2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhm
bG9hdCBwYWdlWm9vbUZhY3RvciwgZmxvYXQgdGV4dFpvb21GYWN0b3IpOwogCiAgICAgLy8gTm9y
bWFsIGRlbGF5CiAgICAgc3RhdGljIHZvaWQgc2V0UmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJl
cGFpbnREZWxheShkb3VibGUgcCk7CkBAIC0zNzMsNyArMzcyLDggQEAgcHJpdmF0ZToKICAgICAv
LyBSZW5kZXJlciB0byBob2xkIG91ciBjdXN0b20gc2Nyb2xsIGNvcm5lci4KICAgICBSZW5kZXJT
Y3JvbGxiYXJQYXJ0KiBtX3Njcm9sbENvcm5lcjsKIAotICAgIGZsb2F0IG1fem9vbUZhY3RvcjsK
KyAgICBmbG9hdCBtX3BhZ2Vab29tRmFjdG9yOworICAgIGZsb2F0IG1fdGV4dFpvb21GYWN0b3I7
CiAKICAgICBzdGF0aWMgZG91YmxlIHNfZGVmZXJyZWRSZXBhaW50RGVsYXk7CiAgICAgc3RhdGlj
IGRvdWJsZSBzX2luaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmc7CkluZGV4
OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNiBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFn
ZSogcGFnZSkKICAgICAsIG1fc2Vzc2lvblN0b3JhZ2VRdW90YShTdG9yYWdlTWFwOjpub1F1b3Rh
KQogI2VuZGlmCiAgICAgLCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lKG51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCi0gICAgLCBtX3pvb21Nb2RlKFpvb21QYWdlKQogICAgICwgbV9pc1Nw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQpAQCAtNTExLDE1ICs1
MTAsNiBAQCB2b2lkIFNldHRpbmdzOjpzZXRTaG91bGRQYWludEN1c3RvbVNjcm9sCiAgICAgbV9z
aG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMgPSBzaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnM7
CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFpvb21Nb2RlKFpvb21Nb2RlIG1vZGUpCi17Ci0gICAg
aWYgKG1vZGUgPT0gbV96b29tTW9kZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fem9v
bU1vZGUgPSBtb2RlOwotICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcyhtX3BhZ2Up
OwotfQotCiB2b2lkIFNldHRpbmdzOjpzZXRFbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZShib29sIGVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKQogewogICAgIG1fZW5mb3Jj
ZUNTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgPSBlbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtz
TW9kZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRWRpdGlu
Z0JlaGF2aW9yVHlwZXMuaCIKICNpbmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgogI2luY2x1
ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJab29tTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTEsOSArMjUwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkUGFpbnRDdXN0b21T
Y3JvbGxiYXJzKGJvb2wpOwogICAgICAgICBib29sIHNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFy
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzOyB9Ci0KLSAg
ICAgICAgdm9pZCBzZXRab29tTW9kZShab29tTW9kZSk7Ci0gICAgICAgIFpvb21Nb2RlIHpvb21N
b2RlKCkgY29uc3QgeyByZXR1cm4gbV96b29tTW9kZTsgfQogICAgICAgICAKICAgICAgICAgdm9p
ZCBzZXRFbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZShib29sKTsKICAgICAgICAgYm9v
bCBlbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSgpIHsgcmV0dXJuIG1fZW5mb3JjZUNT
U01JTUVUeXBlSW5Ob1F1aXJrc01vZGU7IH0KQEAgLTM1NCw3ICszNTAsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fc2Vzc2lvblN0b3JhZ2VRdW90YTsKICNlbmRp
ZgogICAgICAgICB1bnNpZ25lZCBtX3BsdWdpbkFsbG93ZWRSdW5UaW1lOwotICAgICAgICBab29t
TW9kZSBtX3pvb21Nb2RlOwogICAgICAgICBib29sIG1faXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQgOiAxOwogICAgICAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wg
bV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgOiAxOwpJbmRleDogV2ViQ29yZS9wYWdlL1pvb21N
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1pvb21Nb2RlLmgJKHJldmlzaW9uIDY3
MTE5KQorKysgV2ViQ29yZS9wYWdlL1pvb21Nb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBSZXNlYXJjaCBpbiBNb3Rpb24gTHRk
LiBodHRwOi8vd3d3LnJpbS5jb20vCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgWm9vbU1vZGVfaAotI2RlZmluZSBab29tTW9k
ZV9oCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBab29tTW9kZSB7Ci0gICAgWm9vbVBh
Z2UsCi0gICAgWm9vbVRleHRPbmx5Ci19OwotCi19Ci0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2NSw5ICs2NjUsNyBAQCBpbnQgUmVuZGVy
Vmlldzo6dmlld1dpZHRoKCkgY29uc3QKIAogZmxvYXQgUmVuZGVyVmlldzo6em9vbUZhY3Rvcigp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lVmlldy0+c2hvdWxkQXBwbHlQYWdlWm9vbSgpKQot
ICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gbV9mcmFtZVZpZXctPnpvb21GYWN0b3IoKTsK
KyAgICByZXR1cm4gbV9mcmFtZVZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CiB9CiAKIC8vIFRoZSBp
ZGVhIGhlcmUgaXMgdG8gdGFrZSBpbnRvIGFjY291bnQgd2hhdCBvYmplY3QgaXMgbW92aW5nIHRo
ZSBwYWdpbmF0aW9uIHBvaW50LCBhbmQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biA2NzExOSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUo
ZmxvYQogICAgICAgICAvLyBDYWxsaW5nIHNldEN1cnJlbnRTY2FsZSgpIG9uIHRoZSBvdXRlcm1v
c3QgPHN2Zz4gZWxlbWVudCBpbiBhIHN0YW5kYWxvbmUgU1ZHIGRvY3VtZW50CiAgICAgICAgIC8v
IGlzIGFsbG93ZWQgdG8gY2hhbmdlIHRoZSBwYWdlIHpvb20gZmFjdG9yLCBpbmZsdWVuY2luZyB0
aGUgZG9jdW1lbnQgc2l6ZSwgc2Nyb2xsYmFycyBldGMuCiAgICAgICAgIGlmIChwYXJlbnROb2Rl
KCkgPT0gZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHZpZXctPnNldFpvb21GYWN0b3Ioc2NhbGUs
IFpvb21QYWdlKTsKKyAgICAgICAgICAgIHZpZXctPnNldFBhZ2Vab29tRmFjdG9yKHNjYWxlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY3MTY1KQorKysgV2ViS2l0Mi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wOS0xMCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjb25zdHJhaW50IGluIFdlYkNv
cmUgb2YgY2hvb3NpbmcgZWl0aGVyIHRleHQgem9vbSBvciBmdWxsIHBhZ2Ugem9vbS4KKyAgICAg
ICAgUHJlY3Vyc29yIHRvIDxyZGFyOi8vcHJvYmxlbS83NjYwNjU3PgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1MjIKKworICAgICAgICBOb3cgdGhh
dCBXZWJDb3JlIGRvZXNuJ3QgcmVxdWlyZSBhIG1vZGUsIGNoYW5nZSB0aGUgYnVuZGxlIEFQSSBm
b3Igem9vbSB0byBub3QKKyAgICAgICAgcmVxdWlyZSBvbmUgZWl0aGVyLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6Cisg
ICAgICAgIChXS0J1bmRsZVBhZ2VTdG9wTG9hZGluZyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VH
ZXRUZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRUZXh0Wm9vbUZhY3Rv
cik6CisgICAgICAgIChXS0J1bmRsZVBhZ2VHZXRQYWdlWm9vbUZhY3Rvcik6CisgICAgICAgIChX
S0J1bmRsZVBhZ2VTZXRQYWdlWm9vbUZhY3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGV4dFpvb21GYWN0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRUZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
UGFnZVpvb21GYWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisKIDIwMTAtMDktMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgJ
KHJldmlzaW9uIDY3MTE5KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0QWZmaW5pdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJD
b250ZW50VHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTY3JpcHRUeXBlcy5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvWm9vbU1vZGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0xMTgsMTkgKzExNyw2IEBAIGlubGluZSBXS0Fm
ZmluaXR5VHlwZSB0b1dLKFdlYkNvcmU6OkVBZmYKICAgICByZXR1cm4ga1dLQWZmaW5pdHlVcHN0
cmVhbTsKIH0KIAotaW5saW5lIFdlYkNvcmU6Olpvb21Nb2RlIHRvWm9vbU1vZGUoV0tCdW5kbGVQ
YWdlWm9vbU1vZGUgd2tab29tTW9kZSkKLXsKLSAgICBzd2l0Y2ggKHdrWm9vbU1vZGUpIHsKLSAg
ICBjYXNlIGtXS0J1bmRsZVBhZ2Vab29tTW9kZVRleHRPbmx5OgotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Wm9vbVRleHRPbmx5OwotICAgIGNhc2Uga1dLQnVuZGxlUGFnZVpvb21Nb2RlUGFnZToK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Olpvb21QYWdlOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpab29tVGV4dE9ubHk7Ci19Ci0KIGlu
bGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0b1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lKFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgd2tJbmplY3RlZFRpbWUpCiB7CiAgICAg
c3dpdGNoICh3a0luamVjdGVkVGltZSkgewpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9u
IDY3MTE5KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDExIEBAIFdLQnVuZGxlRnJh
bWVSZWYgV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW0KICAgICByZXR1cm4gdG9SZWYodG9XSyhwYWdl
UmVmKS0+bWFpbkZyYW1lKCkpOwogfQogCit2b2lkIFdLQnVuZGxlUGFnZVN0b3BMb2FkaW5nKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHRvV0socGFnZVJlZiktPnN0b3BMb2FkaW5n
KCk7Cit9CisKIFdLU3RyaW5nUmVmIFdLQnVuZGxlUGFnZUNvcHlSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKICAgICByZXR1cm4gdG9D
b3BpZWRSZWYodG9XSyhwYWdlUmVmKS0+cmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
KSk7CkBAIC05NSwyMiArMTAwLDIyIEBAIHZvaWQgV0tCdW5kbGVQYWdlQ2xvc2UoV0tCdW5kbGVQ
YWdlUmVmIHAKICAgICB0b1dLKHBhZ2VSZWYpLT5zZW5kQ2xvc2UoKTsKIH0KIAotZmxvYXQgV0tC
dW5kbGVQYWdlR2V0Wm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK2Zsb2F0IFdL
QnVuZGxlUGFnZUdldFRleHRab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewot
ICAgIHJldHVybiB0b1dLKHBhZ2VSZWYpLT56b29tRmFjdG9yKCk7CisgICAgcmV0dXJuIHRvV0so
cGFnZVJlZiktPnRleHRab29tRmFjdG9yKCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdlU2V0Wm9v
bUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgZmxvYXQgem9vbUZhY3RvcikKK3ZvaWQg
V0tCdW5kbGVQYWdlU2V0VGV4dFpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGZs
b2F0IHpvb21GYWN0b3IpCiB7Ci0gICAgdG9XSyhwYWdlUmVmKS0+c2V0Wm9vbUZhY3Rvcih6b29t
RmFjdG9yKTsKKyAgICB0b1dLKHBhZ2VSZWYpLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFjdG9y
KTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTZXRab29tTW9kZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVQYWdlWm9vbU1vZGUgem9vbU1vZGUpCitmbG9hdCBXS0J1bmRsZVBhZ2VH
ZXRQYWdlWm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICB0b1dLKHBh
Z2VSZWYpLT5zZXRab29tTW9kZSh0b1pvb21Nb2RlKHpvb21Nb2RlKSk7CisgICAgcmV0dXJuIHRv
V0socGFnZVJlZiktPnBhZ2Vab29tRmFjdG9yKCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdlU3Rv
cExvYWRpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCit2b2lkIFdLQnVuZGxlUGFnZVNldFBh
Z2Vab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBmbG9hdCB6b29tRmFjdG9yKQog
ewotICAgIHRvV0socGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CisgICAgdG9XSyhwYWdlUmVmKS0+
c2V0UGFnZVpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmgJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MjMgKzMzLDE4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1lbnVtIFdLQnVuZGxlUGFnZVpv
b21Nb2RlIHsKLSAgICBrV0tCdW5kbGVQYWdlWm9vbU1vZGVQYWdlID0gMCwKLSAgICBrV0tCdW5k
bGVQYWdlWm9vbU1vZGVUZXh0T25seSA9IDEKLX07Ci10eXBlZGVmIGVudW0gV0tCdW5kbGVQYWdl
Wm9vbU1vZGUgV0tCdW5kbGVQYWdlWm9vbU1vZGU7Ci0KK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVN0b3BMb2FkaW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBib29sIFdL
QnVuZGxlUGFnZUlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBjb21tYW5kTmFtZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VDbGVh
ck1haW5GcmFtZU5hbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tC
dW5kbGVQYWdlQ2xvc2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLQnVuZGxlUGFnZUNvcHlSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXS0J1
bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VFeGVjdXRlRWRp
dGluZ0NvbW1hbmQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGNvbW1hbmROYW1l
LCBXS1N0cmluZ1JlZiBhcmd1bWVudCk7CiAKLVdLX0VYUE9SVCBmbG9hdCBXS0J1bmRsZVBhZ2VH
ZXRab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKLVdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldFpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGZsb2F0IHpvb21GYWN0
b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Wm9vbU1vZGUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVpvb21Nb2RlIHpvb21Nb2RlKTsKK1dLX0VYUE9SVCBmbG9h
dCBXS0J1bmRsZVBhZ2VHZXRUZXh0Wm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRUZXh0Wm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgZmxvYXQgem9vbUZhY3Rvcik7CitXS19FWFBPUlQgZmxvYXQgV0tCdW5kbGVQYWdl
R2V0UGFnZVpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGZsb2F0
IHpvb21GYWN0b3IpOwogCi1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTdG9wTG9hZGluZyhX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDY3MTE5KQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw3ICsxMTUsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRGaXhlZEZvbnRGYW1pbHkoc3RvcmUuZml4ZWRGb250
RmFtaWx5KTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFNhbnNTZXJpZkZvbnRGYW1pbHko
c3RvcmUuc2Fuc1NlcmlmRm9udEZhbWlseSk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRT
ZXJpZkZvbnRGYW1pbHkoc3RvcmUuc2VyaWZGb250RmFtaWx5KTsKLQogICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS0+c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSh0cnVlKTsK
IAogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKCJXZWJLaXQyR3JvdXAiKTsKQEAgLTMwMywyNyAr
MzAyLDQwIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0JiAKICAgICBn
cmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogfQogCi1mbG9hdCBXZWJQYWdlOjp6b29tRmFjdG9y
KCkgY29uc3QKK2Zsb2F0IFdlYlBhZ2U6OnRleHRab29tRmFjdG9yKCkgY29uc3QKIHsKICAgICBp
ZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkgewogICAgICAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdmlldy0+em9vbUZhY3RvcigpOworICAgICAgICAgICAgcmV0dXJuIHZpZXctPnRleHRa
b29tRmFjdG9yKCk7CiAgICAgfQogICAgIAogICAgIHJldHVybiAxLjBmOwogfQogCi12b2lkIFdl
YlBhZ2U6OnNldFpvb21GYWN0b3IoZmxvYXQgem9vbUZhY3RvcikKK3ZvaWQgV2ViUGFnZTo6c2V0
VGV4dFpvb21GYWN0b3IoZmxvYXQgem9vbUZhY3RvcikKK3sKKyAgICBpZiAoRnJhbWUqIGNvcmVG
cmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3
KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCisgICAgICAgICAgICByZXR1cm4gdmlldy0+c2V0
VGV4dFpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CisgICAgfQorfQorCitmbG9hdCBXZWJQYWdlOjpw
YWdlWm9vbUZhY3RvcigpIGNvbnN0CiB7CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBtX21h
aW5GcmFtZS0+Y29yZUZyYW1lKCkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGNv
cmVGcmFtZS0+dmlldygpKQotICAgICAgICAgICAgcmV0dXJuIHZpZXctPnNldFpvb21GYWN0b3Io
em9vbUZhY3RvciwgbV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiB2aWV3LT5wYWdlWm9vbUZhY3RvcigpOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4g
MS4wZjsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRab29tTW9kZShab29tTW9kZSBtb2RlKQordm9p
ZCBXZWJQYWdlOjpzZXRQYWdlWm9vbUZhY3RvcihmbG9hdCB6b29tRmFjdG9yKQogewotICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1vZGUobW9kZSk7CisgICAgaWYgKEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHZpZXctPnNl
dFBhZ2Vab29tRmFjdG9yKHpvb21GYWN0b3IpOworICAgIH0KIH0KIAogLy8gRXZlbnRzIApJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNjcxMTkpCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDYgQEAKICNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvWm9vbU1vZGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTI2
LDkgKzEyNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1haW5GcmFtZU5hbWUoKTsKICAg
ICB2b2lkIHNlbmRDbG9zZSgpOwogCi0gICAgZmxvYXQgem9vbUZhY3RvcigpIGNvbnN0OwotICAg
IHZvaWQgc2V0Wm9vbUZhY3RvcihmbG9hdCk7Ci0gICAgdm9pZCBzZXRab29tTW9kZShXZWJDb3Jl
Ojpab29tTW9kZSk7CisgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IoKSBjb25zdDsKKyAgICB2b2lk
IHNldFRleHRab29tRmFjdG9yKGZsb2F0KTsKKyAgICBmbG9hdCBwYWdlWm9vbUZhY3RvcigpIGNv
bnN0OworICAgIHZvaWQgc2V0UGFnZVpvb21GYWN0b3IoZmxvYXQpOwogCiAgICAgdm9pZCBzdG9w
TG9hZGluZygpOwogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY3MjI1KQorKysgV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEw
LTA5LTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFp
bnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBlaXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6
b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8gPHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisgICAg
ICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Onpvb21UZXh0
T25seSk6CisgICAgICAgIE1vdmUgdHJhY2tpbmcgb2YgdGV4dCBvbmx5IHpvb20gaGVyZSBmcm9t
IFdlYkNvcmUuCisKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY3MTE2KQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzk4LDEyICsxMzk4LDEyIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRl
ckNsaWVudEltcGwKICAgICBpZiAoIXdlYlBsdWdpbi0+aW5pdGlhbGl6ZShjb250YWluZXIuZ2V0
KCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX3dlYkZyYW1lLT5mcmFtZSgpLT52
aWV3KCktPnpvb21GYWN0b3IoKSAhPSAxKSB7CisgICAgYm9vbCB6b29tVGV4dE9ubHkgPSBtX3dl
YkZyYW1lLT52aWV3SW1wbCgpLT56b29tVGV4dE9ubHkoKTsKKyAgICBmbG9hdCB6b29tRmFjdG9y
ID0gem9vbVRleHRPbmx5ID8gbV93ZWJGcmFtZS0+ZnJhbWUoKS0+dmlldygpLT50ZXh0Wm9vbUZh
Y3RvcigpIDogbV93ZWJGcmFtZS0+ZnJhbWUoKS0+dmlldygpLT5wYWdlWm9vbUZhY3RvcigpOwor
ICAgIGlmICh6b29tRmFjdG9yICE9IDEpIHsKICAgICAgICAgLy8gVGhlcmUncyBhIHNhdmVkIHpv
b20gbGV2ZWwsIHNvIHRlbGwgdGhlIHBsdWdpbiBhYm91dCBpdCBzaW5jZQogICAgICAgICAvLyBX
ZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsIHdhcyBjYWxsZWQgYmVmb3JlIHRoZSBwbHVnaW4gd2Fz
IGNyZWF0ZWQuCi0gICAgICAgIHdlYlBsdWdpbi0+c2V0Wm9vbUZhY3RvcigKLSAgICAgICAgICAg
IG1fd2ViRnJhbWUtPmZyYW1lKCktPnZpZXcoKS0+em9vbUZhY3RvcigpLAotICAgICAgICAgICAg
bV93ZWJGcmFtZS0+ZnJhbWUoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpv
b21UZXh0T25seSk7CisgICAgICAgIHdlYlBsdWdpbi0+c2V0Wm9vbUZhY3Rvcih6b29tRmFjdG9y
LCB6b29tVGV4dE9ubHkpOwogICAgIH0KIAogICAgIC8vIFRoZSBlbGVtZW50IG1pZ2h0IGhhdmUg
YmVlbiByZW1vdmVkIGR1cmluZyBwbHVnaW4gaW5pdGlhbGl6YXRpb24hCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw3IEBA
IFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiAKICAgICAsIG1fbmV3TmF2
aWdhdGlvbkxvYWRlcigwKQogI2VuZGlmCiAgICAgLCBtX3pvb21MZXZlbCgwKQorICAgICwgbV96
b29tVGV4dE9ubHkoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRNZW51QWxsb3dlZChmYWxzZSkKICAg
ICAsIG1fZG9pbmdEcmFnQW5kRHJvcChmYWxzZSkKICAgICAsIG1faWdub3JlSW5wdXRFdmVudHMo
ZmFsc2UpCkBAIC0xNDc3LDEzICsxNDc4LDIzIEBAIGludCBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxl
dmVsKGJvb2wgdGV4dE8KICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAg
IGlmICghdmlldykKICAgICAgICAgcmV0dXJuIG1fem9vbUxldmVsOwotICAgIGlmICh6b29tRmFj
dG9yICE9IHZpZXctPnpvb21GYWN0b3IoKSkgewotICAgICAgICB2aWV3LT5zZXRab29tRmFjdG9y
KHpvb21GYWN0b3IsIHRleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOworCisgICAg
ZmxvYXQgb2xkWm9vbUZhY3RvciA9IG1fem9vbVRleHRPbmx5ID8gdmlldy0+dGV4dFpvb21GYWN0
b3IoKSA6IHBhZ2UtPnRleHRab29tRmFjdG9yKCk7CisKKyAgICBpZiAodGV4dE9ubHkpCisgICAg
ICAgIHZpZXctPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoMSwgem9vbUZhY3Rvcik7CisgICAg
ZWxzZQorICAgICAgICB2aWV3LT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHpvb21GYWN0b3Is
IDEpOworCisgICAgaWYgKG9sZFpvb21GYWN0b3IgIT0gem9vbUZhY3RvciAmJiB0ZXh0T25seSAh
PSBtX3pvb21UZXh0T25seSkgewogICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVn
aW5Db250YWluZXIgPSBXZWJGcmFtZUltcGw6OnBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShmcmFt
ZSk7CiAgICAgICAgIGlmIChwbHVnaW5Db250YWluZXIpCiAgICAgICAgICAgICBwbHVnaW5Db250
YWluZXItPnBsdWdpbigpLT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHRleHRPbmx5KTsKLSAg
ICAgICAgbV96b29tTGV2ZWwgPSB6b29tTGV2ZWw7CiAgICAgfQorCisgICAgbV96b29tTGV2ZWwg
PSB6b29tTGV2ZWw7CisgICAgbV96b29tVGV4dE9ubHkgPSB0ZXh0T25seTsKKwogICAgIHJldHVy
biBtX3pvb21MZXZlbDsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2
aXNpb24gNjcxMTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzNyw2ICszMzcsOCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpQb3B1
cENvbnRhaW5lciogc2VsZWN0UG9wdXAoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdFBvcHVwLmdl
dCgpOyB9CiAKKyAgICBib29sIHpvb21UZXh0T25seSgpIGNvbnN0IHsgcmV0dXJuIG1fem9vbVRl
eHRPbmx5OyB9CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGxlYWRzIHRvIHNj
cm9sbGluZy4KICAgICBzdGF0aWMgYm9vbCBtYXBLZXlDb2RlRm9yU2Nyb2xsKGludCBrZXlDb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb24qIHNjcm9sbERpcmVjdGlvbiwKQEAgLTQzMyw2ICs0MzUsOCBAQCBwcml2YXRlOgogICAg
IC8vIG1lYW4gem9vbSBpbiwgbmVnYXRpdmUgbnVtYmVycyBtZWFuIHpvb20gb3V0LgogICAgIGlu
dCBtX3pvb21MZXZlbDsKIAorICAgIGJvb2wgbV96b29tVGV4dE9ubHk7CisKICAgICBib29sIG1f
Y29udGV4dE1lbnVBbGxvd2VkOwogCiAgICAgYm9vbCBtX2RvaW5nRHJhZ0FuZERyb3A7CkluZGV4
OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjcyMjUpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA5LTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBlaXRoZXIg
dGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8gPHJkYXI6
Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTUyMgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVsKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19hcHBseV96b29tX2xldmVsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19z
ZXRfZnVsbF9jb250ZW50X3pvb20pOgorCiAyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA3OSw3ICs0
MDc5LDggQEAgZ2Zsb2F0IHdlYmtpdF93ZWJfdmlld19nZXRfem9vbV9sZXZlbChXZQogICAgIGlm
ICghdmlldykKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICByZXR1cm4gdmlldy0+em9vbUZhY3Rv
cigpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAg
ICByZXR1cm4gcHJpdi0+em9vbUZ1bGxDb250ZW50ID8gdmlldy0+cGFnZVpvb21GYWN0b3IoKSA6
IHZpZXctPnRleHRab29tRmFjdG9yKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19hcHBseV96b29tX2xldmVsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGdmbG9hdCB6b29tTGV2
ZWwpCkBAIC00MDkzLDcgKzQwOTQsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Fw
cGx5X3pvb21fbAogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgdmlldy0+c2V0Wm9vbUZhY3Rvcih6b29tTGV2ZWws
IHByaXYtPnpvb21GdWxsQ29udGVudCA/IFpvb21QYWdlIDogWm9vbVRleHRPbmx5KTsKKyAgICBp
ZiAocHJpdi0+em9vbUZ1bGxDb250ZW50KQorICAgICAgICB2aWV3LT5zZXRQYWdlWm9vbUZhY3Rv
cih6b29tTGV2ZWwpOworICAgIGVsc2UKKyAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3Io
em9vbUxldmVsKTsgICAgICAgIAogfQogCiAvKioKQEAgLTQxOTYsOCArNDIwMCwyMSBAQCB2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXRfZnVsbF9jb250ZW50X3pvCiAgICAgaWYgKHByaXYtPnpvb21G
dWxsQ29udGVudCA9PSB6b29tRnVsbENvbnRlbnQpCiAgICAgICByZXR1cm47CiAKKyAgICBGcmFt
ZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgcmV0dXJuOworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAg
ICBpZiAoIXZpZXcpCisgICAgICByZXR1cm47CisKKyAgICBnZmxvYXQgem9vbUxldmVsID0gcHJp
di0+em9vbUZ1bGxDb250ZW50ID8gdmlldy0+cGFnZVpvb21GYWN0b3IoKSA6IHZpZXctPnRleHRa
b29tRmFjdG9yKCk7CisKICAgICBwcml2LT56b29tRnVsbENvbnRlbnQgPSB6b29tRnVsbENvbnRl
bnQ7Ci0gICAgd2Via2l0X3dlYl92aWV3X2FwcGx5X3pvb21fbGV2ZWwod2ViVmlldywgd2Via2l0
X3dlYl92aWV3X2dldF96b29tX2xldmVsKHdlYlZpZXcpKTsKKyAgICBpZiAocHJpdi0+em9vbUZ1
bGxDb250ZW50KQorICAgICAgICB2aWV3LT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG11bHRp
cGxpZXIsIDEpOworICAgIGVsc2UKKyAgICAgICAgdmlldy0+c2V0UGFnZUFuZFRleHRab29tRmFj
dG9ycygxLCBtdWx0aXBsaWVyKTsKIAogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJW
aWV3KSwgImZ1bGwtY29udGVudC16b29tIik7CiB9CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjcyMjUpCisr
KyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDEwLTA5LTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0
cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBlaXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFn
ZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8gPHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJl
bmNlc0NoYW5nZWROb3RpZmljYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFpvb21N
dWx0aXBsaWVyOmlzVGV4dE9ubHk6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3JlYWxab29tTXVs
dGlwbGllcklzVGV4dE9ubHldKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6Cisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZh
dGUgaW5pdF0pOgorICAgICAgICBNb3ZlIHRyYWNraW5nIG9mIHRleHQgb25seSB6b29tIGhlcmUg
ZnJvbSBXZWJDb3JlLgorCiAyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTQyNyw3ICsxNDI3LDYgQEAgLSAodm9pZClfcHJlZmVyZW5j
ZXNDaGFuZ2VkTm90aWZpY2F0aW9uOgogICAgIHNldHRpbmdzLT5zZXRXZWJBcmNoaXZlRGVidWdN
b2RlRW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRdKTsKICAg
ICBzZXR0aW5ncy0+c2V0TG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZChbcHJlZmVyZW5j
ZXMgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoW3ByZWZlcmVuY2VzIG9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZF0pOwotICAgIHNldHRpbmdzLT5zZXRab29tTW9kZShbcHJl
ZmVyZW5jZXMgem9vbXNUZXh0T25seV0gPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAgICAg
c2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoW3ByZWZlcmVuY2VzIGph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRdKTsKICAgICBzZXR0aW5ncy0+c2V0WFNTQXVkaXRv
ckVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzWFNTQXVkaXRvckVuYWJsZWRdKTsKICAgICBzZXR0aW5n
cy0+c2V0RW5mb3JjZUNTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUoIVdLQXBwVmVyc2lvbkNoZWNr
TGVzc1RoYW4oQCJjb20uYXBwbGUuaVdlYiIsIC0xLCAyLjEpKTsKQEAgLTE0NTAsNiArMTQ0OSwx
MCBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246CiAKICAgICAvLyBB
cHBsaWNhdGlvbiBDYWNoZSBQcmVmZXJlbmNlcyBhcmUgc3RvcmVkIG9uIHRoZSBnbG9iYWwgY2Fj
aGUgc3RvcmFnZSBtYW5hZ2VyLCBub3QgaW4gU2V0dGluZ3MuCiAgICAgW1dlYkFwcGxpY2F0aW9u
Q2FjaGUgc2V0RGVmYXVsdE9yaWdpblF1b3RhOltwcmVmZXJlbmNlcyBhcHBsaWNhdGlvbkNhY2hl
RGVmYXVsdE9yaWdpblF1b3RhXV07CisKKyAgICBCT09MIHpvb21zVGV4dE9ubHkgPSBbcHJlZmVy
ZW5jZXMgem9vbXNUZXh0T25seV07CisgICAgaWYgKF9wcml2YXRlLT56b29tc1RleHRPbmx5ICE9
IHpvb21zVGV4dE9ubHkpCisgICAgICAgIFtzZWxmIF9zZXRab29tTXVsdGlwbGllcjpfcHJpdmF0
ZS0+em9vbU11bHRpcGxpZXIgaXNUZXh0T25seTp6b29tc1RleHRPbmx5XTsKIH0KIAogc3RhdGlj
IGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQpAQCAtMzI3MiwxNyArMzI3NSwxOCBA
QCAtICh2b2lkKV9zZXRab29tTXVsdGlwbGllcjooZmxvYXQpbXVsdGlwCiB7CiAgICAgLy8gTk9U
RTogVGhpcyBoYXMgbm8gdmlzaWJsZSBlZmZlY3Qgd2hlbiB2aWV3aW5nIGEgUERGIChzZWUgPHJk
YXI6Ly9wcm9ibGVtLzQ3MzczODA+KQogICAgIF9wcml2YXRlLT56b29tTXVsdGlwbGllciA9IG11
bHRpcGxpZXI7Ci0KLSAgICBBU1NFUlQoX3ByaXZhdGUtPnBhZ2UpOwotICAgIGlmIChfcHJpdmF0
ZS0+cGFnZSkKLSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldFpvb21Nb2Rl
KGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CisgICAgX3ByaXZhdGUtPnpv
b21zVGV4dE9ubHkgPSBpc1RleHRPbmx5OwogCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5p
Y2UgdG8gcmV3b3JrIHRoaXMgY29kZSBzbyB0aGF0IF9wcml2YXRlLT56b29tTXVsdGlwbGllciBk
b2Vzbid0IGV4aXN0CiAgICAgLy8gYW5kIGluc3RlYWQgRnJhbWVWaWV3Ojp6b29tRmFjdG9yIGlz
IHVzZWQuCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKICAg
ICBpZiAoY29yZUZyYW1lKSB7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJh
bWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHZpZXctPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwg
aXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKKyAgICAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpKSB7CisgICAgICAgICAgICBpZiAoX3ByaXZh
dGUtPnpvb21zVGV4dE9ubHkpCisgICAgICAgICAgICAgICAgdmlldy0+c2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycygxLCBtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB2aWV3LT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG11bHRpcGxpZXIsIDEpOworICAg
ICAgICB9CiAgICAgfQogfQogCkBAIC0zMzAzLDcgKzMzMDcsNyBAQCAtIChCT09MKV9yZWFsWm9v
bU11bHRpcGxpZXJJc1RleHRPbmx5CiAgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAg
cmV0dXJuIE5POwogICAgIAotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS0+
em9vbU1vZGUoKSA9PSBab29tVGV4dE9ubHk7CisgICAgcmV0dXJuIF9wcml2YXRlLT56b29tc1Rl
eHRPbmx5OwogfQogCiAjZGVmaW5lIE1pbmltdW1ab29tTXVsdGlwbGllciAgICAgICAwLjVmCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBA
QCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAgIEJPT0wgYWxsb3dz
VW5kbzsKICAgICAgICAgCiAgICAgZmxvYXQgem9vbU11bHRpcGxpZXI7CisgICAgQk9PTCB6b29t
c1RleHRPbmx5OwogCiAgICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsK
ICAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQ7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
Lm1tCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCAtIChpZClpbml0IAogICAgIGNzc0Fu
aW1hdGlvbnNTdXNwZW5kZWQgPSBOTzsKIAogICAgIHpvb21NdWx0aXBsaWVyID0gMTsKKyAgICB6
b29tc1RleHRPbmx5ID0gTk87CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAg
ZGFzaGJvYXJkQmVoYXZpb3JBbGxvd1doZWVsU2Nyb2xsaW5nID0gWUVTOwpJbmRleDogV2ViS2l0
L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lv
biA2NzIyNSkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMC0wOS0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vz
c2FyeSBjb25zdHJhaW50IGluIFdlYkNvcmUgb2YgY2hvb3NpbmcgZWl0aGVyIHRleHQgem9vbSBv
ciBmdWxsIHBhZ2Ugem9vbS4KKyAgICAgICAgUHJlY3Vyc29yIHRvIDxyZGFyOi8vcHJvYmxlbS83
NjYwNjU3PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDU1MjIKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1l
OjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAgICAoUVdlYkZyYW1lOjp0ZXh0U2l6ZU11
bHRpcGxpZXIpOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKToKKyAgICAgICAg
KFFXZWJGcmFtZTo6em9vbUZhY3Rvcik6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6Cisg
ICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQcml2YXRlKToKKyAgICAgICAgTW92
ZSB0cmFja2luZyBvZiB0ZXh0IG9ubHkgem9vbSBoZXJlIGZyb20gV2ViQ29yZS4KKwogMjAxMC0w
OS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNjcxMTYpCisr
KyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDksNyAr
MTEwOSw5IEBAIHZvaWQgUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIocXIKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZpZXctPnNldFpvb21GYWN0b3IoZmFj
dG9yLCBab29tVGV4dE9ubHkpOworICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRl
KFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5LCB0cnVlKTsKKworICAgIHZpZXctPnNldFBhZ2VB
bmRUZXh0Wm9vbUZhY3RvcnMoMSwgZmFjdG9yKTsKIH0KIAogLyohCkBAIC0xMTIxLDcgKzExMjMs
NyBAQCBxcmVhbCBRV2ViRnJhbWU6OnRleHRTaXplTXVsdGlwbGllcigpIGNvCiAgICAgaWYgKCF2
aWV3KQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHJldHVybiB2aWV3LT56b29tRmFjdG9yKCk7
CisgICAgcmV0dXJuIGQtPnpvb21UZXh0T25seSA/IHZpZXctPnRleHRab29tRmFjdG9yKCkgOiB2
aWV3LT5wYWdlWm9vbUZhY3RvcigpOwogfQogCiAvKiEKQEAgLTExNDAsNyArMTE0MiwxMCBAQCB2
b2lkIFFXZWJGcmFtZTo6c2V0Wm9vbUZhY3RvcihxcmVhbCBmYWN0CiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm47CiAKLSAgICB2aWV3LT5zZXRab29tRmFjdG9yKGZhY3RvciwgcGFnZS0+
c2V0dGluZ3MoKS0+em9vbU1vZGUoKSk7CisgICAgaWYgKGQtPnpvb21UZXh0T25seSkKKyAgICAg
ICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3IoZmFjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIHZp
ZXctPnNldFBhZ2Vab29tRmFjdG9yKGZhY3Rvcik7CiB9CiAKIHFyZWFsIFFXZWJGcmFtZTo6em9v
bUZhY3RvcigpIGNvbnN0CkBAIC0xMTQ5LDcgKzExNTQsNyBAQCBxcmVhbCBRV2ViRnJhbWU6Onpv
b21GYWN0b3IoKSBjb25zdAogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIDE7CiAKLSAg
ICByZXR1cm4gdmlldy0+em9vbUZhY3RvcigpOworICAgIHJldHVybiBkLT56b29tVGV4dE9ubHkg
PyB2aWV3LT50ZXh0Wm9vbUZhY3RvcigpIDogdmlldy0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAog
LyohCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC9xdC9B
cGkvcXdlYmZyYW1lX3AuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbWFyZ2luV2lkdGgoLTEpCiAgICAgICAgICwgbWFyZ2luSGVpZ2h0KC0xKQog
ICAgICAgICAsIGluaXRpYWxMYXlvdXRDb21wbGV0ZShmYWxzZSkKKyAgICAgICAgLCB6b29tVGV4
dE9ubHkoZmFsc2UpCiAgICAgICAgIHt9CiAgICAgdm9pZCBpbml0KFFXZWJGcmFtZSogcWZyYW1l
LCBRV2ViRnJhbWVEYXRhKiBmcmFtZURhdGEpOwogICAgIHZvaWQgc2V0UGFnZShRV2ViUGFnZSop
OwpAQCAtMTAwLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBpbnQgbWFyZ2luV2lkdGg7CiAgICAg
aW50IG1hcmdpbkhlaWdodDsKICAgICBib29sIGluaXRpYWxMYXlvdXRDb21wbGV0ZTsKKyAgICBi
b29sIHpvb21UZXh0T25seTsKIH07CiAKIGNsYXNzIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSB7
CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gNjcyMjUpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA5LTEwICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBl
aXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8g
PHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6OnNldFpvb21NdWx0aXBsaWVy
KToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisgICAgICAgIE1vdmUgdHJhY2tpbmcgb2YgdGV4dCBv
bmx5IHpvb20gaGVyZSBmcm9tIFdlYkNvcmUuCisKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5k
ZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjYsNiArMzI2LDcgQEAgV2ViVmlldzo6V2ViVmlldygpCiAgICAgLCBt
X3VzZUJhY2tGb3J3YXJkTGlzdCh0cnVlKQogICAgICwgbV91c2VyQWdlbnRPdmVycmlkZGVuKGZh
bHNlKQogICAgICwgbV96b29tTXVsdGlwbGllcigxLjBmKQorICAgICwgbV96b29tc1RleHRPbmx5
KGZhbHNlKQogICAgICwgbV9tb3VzZUFjdGl2YXRlZChmYWxzZSkKICAgICAsIG1fZHJhZ0RhdGEo
MCkKICAgICAsIG1fY3VycmVudENoYXJhY3RlckNvZGUoMCkKQEAgLTI5MjUsMTAgKzI5MjYsMTUg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRQYQogdm9pZCBXZWJWaWV3
OjpzZXRab29tTXVsdGlwbGllcihmbG9hdCBtdWx0aXBsaWVyLCBib29sIGlzVGV4dE9ubHkpCiB7
CiAgICAgbV96b29tTXVsdGlwbGllciA9IG11bHRpcGxpZXI7Ci0gICAgbV9wYWdlLT5zZXR0aW5n
cygpLT5zZXRab29tTW9kZShpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwor
ICAgIG1fem9vbXNUZXh0T25seSA9IGlzVGV4dE9ubHk7CisKICAgICBpZiAoRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUobV9tYWluRnJhbWUpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcg
PSBjb3JlRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHZpZXctPnNldFpvb21GYWN0b3IobXVs
dGlwbGllciwgaXNUZXh0T25seSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKKyAgICAgICAg
ICAgIGlmIChtX3pvb21zVGV4dE9ubHkpCisgICAgICAgICAgICAgICAgdmlldy0+c2V0UGFnZUFu
ZFRleHRab29tRmFjdG9ycygxLCBtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB2aWV3LT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG11bHRpcGxpZXIsIDEp
OworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0yOTQ4LDggKzI5NTQsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhZ2VTCiAKIGZsb2F0IFdlYlZpZXc6Onpvb21NdWx0
aXBsaWVyKGJvb2wgaXNUZXh0T25seSkKIHsKLSAgICBab29tTW9kZSB6b29tTW9kZSA9IGlzVGV4
dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZTsKLSAgICBpZiAoem9vbU1vZGUgIT0gbV9w
YWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpKQorICAgIGlmIChpc1RleHRPbmx5ICE9IG1fem9v
bXNUZXh0T25seSkKICAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAgcmV0dXJuIG1fem9vbU11bHRp
cGxpZXI7CiB9CkBAIC0zNzMyLDcgKzM3MzcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OmNhbk1hCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8s
CiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIGJvb2wg
Y2FuR3Jvd01vcmUgPSBjYW5ab29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09
IFpvb21UZXh0T25seSk7CisgICAgYm9vbCBjYW5Hcm93TW9yZSA9IGNhblpvb21JbihtX3pvb21z
VGV4dE9ubHkpOwogICAgICpyZXN1bHQgPSBjYW5Hcm93TW9yZSA/IFRSVUUgOiBGQUxTRTsKICAg
ICByZXR1cm4gU19PSzsKIH0KQEAgLTM3NTQsNyArMzc1OSw3IEBAIGJvb2wgV2ViVmlldzo6Y2Fu
Wm9vbUluKGJvb2wgaXNUZXh0T25seSkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6bWFrZVRleHRMYXJnZXIoIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRl
ciovKQogewotICAgIHJldHVybiB6b29tSW4obV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgp
ID09IFpvb21UZXh0T25seSk7CisgICAgcmV0dXJuIHpvb21JbihtX3pvb21zVGV4dE9ubHkpOwog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Onpvb21QYWdlSW4oIApAQCAt
Mzc3NSw3ICszNzgwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjYW5N
YQogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovLAogICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKIHsKLSAgICBib29sIGNhblNocmlua01vcmUg
PSBjYW5ab29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9u
bHkpOworICAgIGJvb2wgY2FuU2hyaW5rTW9yZSA9IGNhblpvb21PdXQobV96b29tc1RleHRPbmx5
KTsKICAgICAqcmVzdWx0ID0gY2FuU2hyaW5rTW9yZSA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1
cm4gU19PSzsKIH0KQEAgLTM3OTcsNyArMzgwMiw3IEBAIGJvb2wgV2ViVmlldzo6Y2FuWm9vbU91
dChib29sIGlzVGV4dE9ubHkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFr
ZVRleHRTbWFsbGVyKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykK
IHsKLSAgICByZXR1cm4gem9vbU91dChtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0g
Wm9vbVRleHRPbmx5KTsKKyAgICByZXR1cm4gem9vbU91dChtX3pvb21zVGV4dE9ubHkpOwogfQog
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Onpvb21QYWdlT3V0KCAKQEAgLTQ2
MzQsNyArNDYzOSw5IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UK
ICAgICBociA9IHByZWZlcmVuY2VzLT56b29tc1RleHRPbmx5KCZlbmFibGVkKTsKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIHNldHRpbmdzLT5zZXRab29tTW9k
ZShlbmFibGVkID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOworCisgICAgaWYgKG1fem9vbXNU
ZXh0T25seSAhPSBlbmFibGVkKQorICAgICAgICBzZXRab29tTXVsdGlwbGllcihtX3pvb21NdWx0
aXBsaWVyLCBlbmFibGVkKTsKIAogICAgIHNldHRpbmdzLT5zZXRTaG93c1VSTHNJblRvb2xUaXBz
KGZhbHNlKTsKICAgICBzZXR0aW5ncy0+c2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyh0cnVl
KTsKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViVmlldy5oCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC93aW4vV2ViVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OTUsNiArOTk1LDcgQEAgcHJvdGVjdGVkOgogICAgIFdURjo6U3RyaW5n
IG1fdXNlckFnZW50Q3VzdG9tOwogICAgIFdURjo6U3RyaW5nIG1fdXNlckFnZW50U3RhbmRhcmQ7
CiAgICAgZmxvYXQgbV96b29tTXVsdGlwbGllcjsKKyAgICBib29sIG1fem9vbXNUZXh0T25seTsK
ICAgICBXVEY6OlN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAgICAgV1RGOjpTdHJpbmcgbV9h
cHBsaWNhdGlvbk5hbWU7CiAgICAgYm9vbCBtX21vdXNlQWN0aXZhdGVkOwpJbmRleDogV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gNjcxNjUpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMiBAQAorMjAxMC0wOS0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1
bm5lY2Vzc2FyeSBjb25zdHJhaW50IGluIFdlYkNvcmUgb2YgY2hvb3NpbmcgZWl0aGVyIHRleHQg
em9vbSBvciBmdWxsIHBhZ2Ugem9vbS4KKyAgICAgICAgUHJlY3Vyc29yIHRvIDxyZGFyOi8vcHJv
YmxlbS83NjYwNjU3PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU1MjIKKworICAgICAgICBVcGRhdGUgZm9yIGNoYW5nZXMgdG8gdGhlIEJ1bmRsZSBB
UEkgdG8gYWxsb3cgc2VwYXJhdGUgY29udHJvbCBvZiBwYWdlIGFuZCB0ZXh0IHpvb20KKyAgICAg
ICAgbGV2ZWxzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6dGV4dFpvb21Jbik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OnRleHRab29tT3V0KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
em9vbVBhZ2VJbik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Onpvb21Q
YWdlT3V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cmVz
ZXQpOgorCiAyMDEwLTA5LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjcxMTkuCkluZGV4OiBX
ZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDY3MTE2
KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMzAgKzkyLDM4IEBAIHZv
aWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bGVhcEZvcndhcmQKIAogdm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjp0ZXh0Wm9vbUluKCkKIHsKLSAgICBXS0J1bmRsZVBhZ2VTZXRab29tTW9k
ZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIGtXS0J1bmRsZVBhZ2Va
b29tTW9kZVRleHRPbmx5KTsKLSAgICBmbG9hdCB6b29tRmFjdG9yID0gV0tCdW5kbGVQYWdlR2V0
Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOwotICAg
IFdLQnVuZGxlUGFnZVNldFpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2Uo
KS0+cGFnZSgpLCB6b29tRmFjdG9yICogWm9vbU11bHRpcGxpZXJSYXRpbyk7CisgICAgLy8gRW5z
dXJlIHBhZ2Ugem9vbSBpcyByZXNldC4KKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlWm9vbUZhY3Rv
cihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIDEuMGYpOworCisgICAg
ZmxvYXQgem9vbUZhY3RvciA9IFdLQnVuZGxlUGFnZUdldFRleHRab29tRmFjdG9yKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgV0tCdW5kbGVQYWdlU2V0VGV4
dFpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCB6b29t
RmFjdG9yICogWm9vbU11bHRpcGxpZXJSYXRpbyk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6dGV4dFpvb21PdXQoKQogewotICAgIFdLQnVuZGxlUGFnZVNldFpvb21Nb2RlKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwga1dLQnVuZGxlUGFnZVpvb21N
b2RlVGV4dE9ubHkpOwotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBXS0J1bmRsZVBhZ2VHZXRab29t
RmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgV0tC
dW5kbGVQYWdlU2V0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5w
YWdlKCksIHpvb21GYWN0b3IgLyBab29tTXVsdGlwbGllclJhdGlvKTsKKyAgICAvLyBFbnN1cmUg
cGFnZSB6b29tIGlzIHJlc2V0LgorICAgIFdLQnVuZGxlUGFnZVNldFBhZ2Vab29tRmFjdG9yKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgMS4wZik7CisKKyAgICBmbG9h
dCB6b29tRmFjdG9yID0gV0tCdW5kbGVQYWdlR2V0VGV4dFpvb21GYWN0b3IoSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRUZXh0Wm9v
bUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpvb21GYWN0
b3IgLyBab29tTXVsdGlwbGllclJhdGlvKTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9s
bGVyOjp6b29tUGFnZUluKCkKIHsKLSAgICBXS0J1bmRsZVBhZ2VTZXRab29tTW9kZShJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIGtXS0J1bmRsZVBhZ2Vab29tTW9kZVBh
Z2UpOwotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBXS0J1bmRsZVBhZ2VHZXRab29tRmFjdG9yKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgV0tCdW5kbGVQYWdl
U2V0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpv
b21GYWN0b3IgKiBab29tTXVsdGlwbGllclJhdGlvKTsKKyAgICAvLyBFbnN1cmUgdGV4dCB6b29t
IGlzIHJlc2V0LgorICAgIFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgMS4wZik7CisKKyAgICBmbG9hdCB6b29tRmFj
dG9yID0gV0tCdW5kbGVQYWdlR2V0UGFnZVpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlWm9vbUZhY3RvcihJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpvb21GYWN0b3IgLyBab29t
TXVsdGlwbGllclJhdGlvKTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp6b29t
UGFnZU91dCgpCiB7Ci0gICAgV0tCdW5kbGVQYWdlU2V0Wm9vbU1vZGUoSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBrV0tCdW5kbGVQYWdlWm9vbU1vZGVQYWdlKTsKLSAg
ICBmbG9hdCB6b29tRmFjdG9yID0gV0tCdW5kbGVQYWdlR2V0Wm9vbUZhY3RvcihJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOwotICAgIFdLQnVuZGxlUGFnZVNldFpvb21G
YWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCB6b29tRmFjdG9y
IC8gWm9vbU11bHRpcGxpZXJSYXRpbyk7CisgICAgLy8gRW5zdXJlIHRleHQgem9vbSBpcyByZXNl
dC4KKyAgICBXS0J1bmRsZVBhZ2VTZXRUZXh0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCksIDEuMGYpOworCisgICAgZmxvYXQgem9vbUZhY3RvciA9IFdL
QnVuZGxlUGFnZUdldFBhZ2Vab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
KCktPnBhZ2UoKSk7CisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCB6b29tRmFjdG9yIC8gWm9vbU11bHRpcGxp
ZXJSYXRpbyk7CiB9CiAKIC8vIE9iamVjdCBDcmVhdGlvbgpJbmRleDogV2ViS2l0VG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1OCw4ICsxNTgsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6cmVz
ZXQoKQogewogICAgIFdLQnVuZGxlUGFnZUNsZWFyTWFpbkZyYW1lTmFtZShtX3BhZ2UpOwogCi0g
ICAgV0tCdW5kbGVQYWdlU2V0Wm9vbUZhY3RvcihtX3BhZ2UsIDEuMGYpOwotICAgIFdLQnVuZGxl
UGFnZVNldFpvb21Nb2RlKG1fcGFnZSwga1dLQnVuZGxlUGFnZVpvb21Nb2RlUGFnZSk7CisgICAg
V0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IobV9wYWdlLCAxLjBmKTsKKyAgICBXS0J1bmRs
ZVBhZ2VTZXRUZXh0Wm9vbUZhY3RvcihtX3BhZ2UsIDEuMGYpOwogfQogCiAvLyBMb2FkZXIgQ2xp
ZW50IENhbGxiYWNrcwo=
</data>
<flag name="review"
          id="56480"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67275</attachid>
            <date>2010-09-10 17:55:59 -0700</date>
            <delta_ts>2010-09-10 18:14:59 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>patchZoom3.diff</filename>
            <type>text/plain</type>
            <size>58069</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzIyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjIgQEAKKzIwMTAtMDktMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgY29uc3RyYWludCBpbiBXZWJDb3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0
IHpvb20gb3IgZnVsbCBwYWdlIHpvb20uCisgICAgICAgIFByZWN1cnNvciB0byA8cmRhcjovL3By
b2JsZW0vNzY2MDY1Nz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ1NTIyCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5w
cm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgWm9vbU1v
ZGUuaAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZSk6Cisg
ICAgICAgIFJlbW92ZSB1c2VzIG9mIHNob3VsZEFwcGx5VGV4dFpvb20oKSwgaXQgaGFkIHR1cm5l
ZCBpbnRvIGp1c3QgYSBjb21wYXJlIHRvIDEuMGYuCisKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3Jab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2V0U2Nyb2xsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbFRvcCk6CisgICAgICAgIENvbnZlcnQgdGhl
c2UgdG8gdXNlIHRoZSBleHBsaWNpdCBwYWdlWm9vbUZhY3RvcigpIGZ1bmN0aW9uLCBpdCBtYWRl
IG5vIHNlbnNlIGZvciB0ZXh0IHpvb20KKyAgICAgICAgYW55d2F5LgorCisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICBSZW1vdmUgaW5jbHVkZSBvZiBab29tTW9kZS5oCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRQYWdlWm9v
bUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRUZXh0Wm9vbUZhY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNldFBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2V0VGV4dFpvb21GYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRQ
YWdlQW5kVGV4dFpvb21GYWN0b3JzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWdlWm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnRleHRab29tRmFjdG9yKToKKyAgICAgICAgQ2hhbmdlIEZyYW1lVmll
dyB0byBzdG9yZSB0d28gdmFsdWVzIGZvciB6b29tLCBvbmUgZm9yIHBhZ2Ugem9vbSBhbmQgb25l
IGZvciB0ZXh0IHpvb20uCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5o
OgorICAgICAgICBSZW1vdmVkIHpvb20gbW9kZS4KKworICAgICAgICAqIHBhZ2UvWm9vbU1vZGUu
aDogUmVtb3ZlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6Onpvb21GYWN0b3IpOgorICAgICAgICBSZW1vdmUgbm93
IHVubmVjZXNzYXJ5IGNhbGwgdG8gc2hvdWxkQXBwbHlQYWdlWm9vbSBzaW5jZSBpdCB3aWxsIGJl
IDEgaWYgaXQgc2hvdWxkCisgICAgICAgIGJlIGlnbm9yZWQuCisKKyAgICAgICAgKiBzdmcvU1ZH
U1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzZXRDdXJy
ZW50U2NhbGUpOgorICAgICAgICBVc2UgZXhwbGljaXQgc2V0UGFnZVpvb21GYWN0b3IgZnVuY3Rp
b24uCisKIDIwMTAtMDktMTAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBRdCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTg3Miw3ICsxODcyLDYgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBcCiAJV2Vi
Q29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIFwK
LQlXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgg
XAogCVdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTM0MSw3ICszNDEsNiBAQCBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tl
cjlzZXRDbGllbnRFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjEwc2V0Rm9jdXNlZEVi
CiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1c2V0Rm9jdXNlZEZyYW1lRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNXNl
dEluaXRpYWxGb2N1c0VOU18xNEZvY3VzRGlyZWN0aW9uRVBOU18xM0tleWJvYXJkRXZlbnRFCi1f
X1pOSzdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxOGZvY3VzZWRPck1haW5GcmFtZUV2CiBfX1pO
N1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjlzZXRBY3RpdmVFYgogX19aTjdXZWJDb3JlMTVHcmFw
aGljc0NvbnRleHQxMnNldEZpbGxDb2xvckVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBf
X1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfOUZsb2F0UmVjdEUKQEAgLTY3
MiwyMCArNjcxLDE5IEBAIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUUK
IF9fWk43V2ViQ29yZThEb2N1bWVudDE3Z2V0Rm9jdXNhYmxlTm9kZXNFUk4zV1RGNlZlY3RvcklO
UzFfNlJlZlB0cklOU180Tm9kZUVFRUxtMEVFRQogX19aTjdXZWJDb3JlOERvY3VtZW50MThjcmVh
dGVXcmFwcGVyQ2FjaGVFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MTlhY2Nlc3NTVkdFeHRlbnNpb25zRXYKK19fWk43V2ViQ29yZThEb2N1bWVudDIwc3R5bGVT
ZWxlY3RvckNoYW5nZWRFTlNfMjNTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZ0UKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDIyY3JlYXRlRG9jdW1lbnRGcmFnbWVudEV2CiBfX1pON1dlYkNvcmU4RG9jdW1l
bnQyNGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlzdGVuZXJF
CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyNHNldFNob3VsZENyZWF0ZVJlbmRlcmVyc0ViCitfX1pO
N1dlYkNvcmU4RG9jdW1lbnQyNXNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNFdgogX19aTjdXZWJD
b3JlOERvY3VtZW50MjZwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VpUk5TXzdJbnRTaXplRVJp
UzNfUzNfUzNfCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyN3JlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0
ZW5lckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlzdGVuZXJFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQz
NnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0V2Ci1fX1pON1dlYkNvcmU4RG9j
dW1lbnQyNXNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNFdgotX19aTjdXZWJDb3JlOERvY3VtZW50
MjBzdHlsZVNlbGVjdG9yQ2hhbmdlZEVOU18yM1N0eWxlU2VsZWN0b3JVcGRhdGVGbGFnRQogX19a
TjdXZWJDb3JlOERvY3VtZW50NGhlYWRFdgogX19aTjdXZWJDb3JlOEZvcm1EYXRhNmNyZWF0ZUVQ
S3ZtCiBfX1pON1dlYkNvcmU4Rm9ybURhdGFEMUV2CiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVS
SzhfTlNQb2ludAogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NE5vZGVFRUVpCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxMXNldFpvb21Nb2RlRU5TXzhab29tTW9k
ZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRV
c2VzUGFnZUNhY2hlRWIKQEAgLTczNyw5ICs3MzUsOSBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3Mz
MXNldFNocmlua3NTdGFuZGFsCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMnNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczMyc2V0TmVlZHNBZG9i
ZUZyYW1lUmVsb2FkaW5nUXVpcmtFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzNzZXREb3dubG9h
ZGFibGVCaW5hcnlGb250c0VuYWJsZWRFYgotX19aTjdXZWJDb3JlOFNldHRpbmdzMzVzZXRFbmZv
cmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzNHNl
dExvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MzVzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0ViCitfX1pON1dlYkNvcmU4U2V0
dGluZ3MzNXNldEVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczM1c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMzVzZXRUcmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MzNnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZEViCkBAIC03NjEsNyArNzU5LDYgQEAgX19aTjdXZWJDb3JlOUZyYW1lVHJlZTdzZXROYW1lRVJL
TjNXVEYxMgogX19aTjdXZWJDb3JlOUZyYW1lVHJlZTljbGVhck5hbWVFdgogX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzExZm9yY2VMYXlvdXRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEyc2V0TWVk
aWFUeXBlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzEzc2V0Wm9vbUZh
Y3RvckVmTlNfOFpvb21Nb2RlRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0YWRqdXN0Vmlld1Np
emVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0TWFyZ2luV2lkdGhFaQogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE0c2V0TmVlZHNMYXlvdXRFdgpAQCAtNzY5LDE1ICs3NjYsMTggQEAgX19a
TjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0VHJhbnNwYXJlbnRFYgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzE1c2V0TWFyZ2luSGVpZ2h0RWkKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNmFkanVzdFBh
Z2VIZWlnaHRFUGZmZmYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNnNldFBhaW50QmVoYXZpb3JF
agorX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0UGFnZVpvb21GYWN0b3JFZgorX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE3c2V0VGV4dFpvb21GYWN0b3JFZgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMGVudGVyQ29t
cG9zaXRpbmdNb2RlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBh
aW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRU5T
XzVDb2xvckUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyM3VwZGF0ZUNhbkhhdmVTY3JvbGxiYXJz
RXYKLV9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRS
ZWN1cnNpdmVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0
aW9uRVJLTlNfOUZsb2F0U2l6ZUVmTlNfNUZyYW1lMTlBZGp1c3RWaWV3U2l6ZU9yTm90RQorX19a
TjdXZWJDb3JlOUZyYW1lVmlldzI1c2V0UGFnZUFuZFRleHRab29tRmFjdG9yc0VmZgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzI5c3luY0NvbXBvc2l0aW5nU3RhdGVSZWN1cnNpdmVFdgorX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9y
bVdpZGdldEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRQogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUE5TXzVGcmFtZUVSS05TXzdJbnRTaXplRQpAQCAt
ODg5LDkgKzg4OSw5IEBAIF9fWk5LN1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwY3VycmVudEtleWIK
IF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNv
cmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNv
cmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
N2NoaWxkQXRFagogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVOU18xMEZsb2F0
UG9pbnRFYmIKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoKIF9fWk5LN1dl
YkNvcmUxMlJlbmRlcldpZGdldDE0d2luZG93Q2xpcFJlY3RFdgogX19aTks3V2ViQ29yZTEyU2hh
cmVkQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyNHNpemVFdgpAQCAt
OTM0LDYgKzkzNCw3IEBAIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXgK
IF9fWk5LN1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTBjb25uZWN0aW9uRXYKIF9fWk5LN1dlYkNv
cmUxNFJlc291cmNlTG9hZGVyMTFmcmFtZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbjVlcXVhbEVQS1MwXworX19aTks3V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMThmb2N1
c2VkT3JNYWluRnJhbWVFdgogX19aTks3V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVwbGF0Zm9y
bUNvbnRleHRFdgogX19aTks3V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTZwYWludGluZ0Rpc2Fi
bGVkRXYKIF9fWk5LN1dlYkNvcmUxNVByb2dyZXNzVHJhY2tlcjE3ZXN0aW1hdGVkUHJvZ3Jlc3NF
dgpAQCAtMTEzOCw2ICsxMTM5LDcgQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtRW5kCiBfd2tTaWdu
YWxDRlJlYWRTdHJlYW1FcnJvcgogX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMKIAorCiAj
aWYgRU5BQkxFKDNEX1JFTkRFUklORykKIF9XZWJDb3JlSGFzM0RSZW5kZXJpbmcKICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNjAsNyArMjE2MCw2IEBACiAgICAgICAgICAgICAncGFnZS9Xb3JrZXJOYXZp
Z2F0b3IuaCcsCiAgICAgICAgICAgICAncGFnZS9YU1NBdWRpdG9yLmNwcCcsCiAgICAgICAgICAg
ICAncGFnZS9YU1NBdWRpdG9yLmgnLAotICAgICAgICAgICAgJ3BhZ2UvWm9vbU1vZGUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5w
cm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjcxMTkpCisr
KyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgwLDcgKzE2ODAsNiBA
QCBIRUFERVJTICs9IFwKICAgICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmggXAogICAgIHBhZ2UvV29y
a2VyTmF2aWdhdG9yLmggXAogICAgIHBhZ2UvWFNTQXVkaXRvci5oIFwKLSAgICBwYWdlL1pvb21N
b2RlLmggXAogICAgIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCBcCiAgICAgcGxhdGZv
cm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vQXJlbmEuaCBcCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDY3MTE5KQor
KysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjMzMjQsMTAgKzIzMzI0LDYgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcWFNTQXVk
aXRvci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIu
LlxwYWdlXFpvb21Nb2RlLmgiCi0JCQkJPgotCQkJPC9GaWxlPgogCQkJPEZpbHRlcgogCQkJCU5h
bWU9IndpbiIKIAkJCQk+CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTEzOSw3ICs1MTM5LDYgQEAKIAkJQ0Uw
MkYwQzQxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTAyRjBDMzExRTgzQUREMDBD
NjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2RDUgLyogRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyogRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE3MkUwMDExMzZFOENFMDA2MkE1
MzMgLyogWm9vbU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDRTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRD
MDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi87IH07CiAJ
CUNFNEMwMEU2MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRDMDBFNTEwRjZGN0Mx
MDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovOyB9OwogCQlDRTU0RkQzODEwMTZE
OUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBT
Y3JpcHRTb3VyY2VQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMDk3NCw3ICsxMDk3Myw2IEBACiAJCUNFMDJGMEMzMTFFODNBREQw
MEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFMTcyRTAwMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29t
TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBab29tTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRN
TE5vU2NyaXB0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0U0QzAwRTUxMEY2RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTE5vU2NyaXB0RWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0
U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzU5LDcg
KzEyNzU3LDYgQEAKIAkJCQlFMTI3MUE1MTBFRUVDRDFDMDBGNjEyMTMgLyogV29ya2VyTmF2aWdh
dG9yLmlkbCAqLywKIAkJCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5j
cHAgKi8sCiAJCQkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLywK
LQkJCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gcGFnZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDM3Niw3ICsy
MDM3Myw2IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5p
Y29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAv
KiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1
MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwRkYyQTVFMTFGOEM0NUEwMDdF
NzRFMCAvKiBQaW5nTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBCNTYxNzEyMTE5RDIz
MDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOTc5MTcx
MjE1RDA1NTAwNUM0ODVDIC8qIEltYWdlQnVmZmVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE1MSwxMCArNDE1MSw4
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgZWxz
ZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKICAgICAg
ICAgICAgIGRvdWJsZSBtdWx0aXBsaWVyID0gem9vbUZhY3RvcjsKICAgICAgICAgICAgIGlmICht
X3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT52aWV3KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHZpZXctPnNob3VsZEFwcGx5VGV4dFpvb20oKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG11bHRpcGxpZXIgKj0gdmlldy0+dGV4dFpvb21GYWN0b3IoKTsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fY2hlY2tlci5t
X2RvY3VtZW50LT52aWV3KCkpCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gdmll
dy0+dGV4dFpvb21GYWN0b3IoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmVIZWln
aHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAgbXVsdGlwbGllciksIEZpeGVkKTsKICAgICAgICAg
fSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKQEAg
LTYyMzEsNyArNjIyOSw3IEBAIGZsb2F0IENTU1N0eWxlU2VsZWN0b3I6OmdldENvbXB1dGVkU2l6
ZUYKICAgICBmbG9hdCB6b29tRmFjdG9yID0gMS4wZjsKICAgICBpZiAoIXVzZVNWR1pvb21SdWxl
cykgewogICAgICAgICB6b29tRmFjdG9yID0gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKLSAgICAg
ICAgaWYgKGRvY3VtZW50LT52aWV3KCkgJiYgZG9jdW1lbnQtPnZpZXcoKS0+c2hvdWxkQXBwbHlU
ZXh0Wm9vbSgpKQorICAgICAgICBpZiAoZG9jdW1lbnQtPnZpZXcoKSkKICAgICAgICAgICAgIHpv
b21GYWN0b3IgKj0gZG9jdW1lbnQtPnZpZXcoKS0+dGV4dFpvb21GYWN0b3IoKTsKICAgICB9CiAK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsNyArMjU0
LDcgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldFZMaW5rKGNvbnN0IFN0cgogCiBzdGF0aWMg
aW50IGFkanVzdEZvclpvb20oaW50IHZhbHVlLCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAg
ICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWVWaWV3LT56b29tRmFjdG9yKCk7CisgICAgZmxvYXQg
em9vbUZhY3RvciA9IGZyYW1lVmlldy0+cGFnZVpvb21GYWN0b3IoKTsKICAgICBpZiAoem9vbUZh
Y3RvciA9PSAxKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgLy8gTmVlZGVkIGJlY2F1c2Ug
b2YgdHJ1bmNhdGlvbiAocmF0aGVyIHRoYW4gcm91bmRpbmcpIHdoZW4gc2NhbGluZyB1cC4KQEAg
LTI3OSw3ICsyNzksNyBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0U2Nyb2xsTGVmdChpbnQg
CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybjsKLSAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChz
dGF0aWNfY2FzdDxpbnQ+KHNjcm9sbExlZnQgKiB2aWV3LT56b29tRmFjdG9yKCkpLCB2aWV3LT5z
Y3JvbGxZKCkpKTsKKyAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChzdGF0aWNf
Y2FzdDxpbnQ+KHNjcm9sbExlZnQgKiB2aWV3LT5wYWdlWm9vbUZhY3RvcigpKSwgdmlldy0+c2Ny
b2xsWSgpKSk7CiB9CiAKIGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCgpIGNvbnN0CkBA
IC0yOTgsNyArMjk4LDcgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbFRvcChpbnQg
cwogICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50LT52aWV3KCk7CiAgICAgaWYgKCF2aWV3
KQogICAgICAgICByZXR1cm47Ci0gICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQo
dmlldy0+c2Nyb2xsWCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNjcm9sbFRvcCAqIHZpZXctPnpvb21G
YWN0b3IoKSkpKTsKKyAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCh2aWV3LT5z
Y3JvbGxYKCksIHN0YXRpY19jYXN0PGludD4oc2Nyb2xsVG9wICogdmlldy0+cGFnZVpvb21GYWN0
b3IoKSkpKTsKIH0KIAogaW50IEhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsSGVpZ2h0KCkgY29uc3QK
SW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZS5oCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiU2Nyb2xsQmVoYXZpb3IuaCIKICNp
bmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVz
LmgiCi0jaW5jbHVkZSAiWm9vbU1vZGUuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRl
ICJGcmFtZVdpbi5oIgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDY3MTE5KQorKysgV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDkgQEAK
IAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9y
LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMTExLDcgKzExMSw3IEBAIHN0cnVj
dCBTY2hlZHVsZWRFdmVudCA6IE5vbmNvcHlhYmxlIHsKICAgICBSZWZQdHI8Tm9kZT4gbV9ldmVu
dFRhcmdldDsKIH07CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgcGFyZW50Wm9vbUZhY3RvcihGcmFt
ZSogZnJhbWUpCitzdGF0aWMgaW5saW5lIGZsb2F0IHBhcmVudFBhZ2Vab29tRmFjdG9yKEZyYW1l
KiBmcmFtZSkKIHsKICAgICBGcmFtZSogcGFyZW50ID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7
CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMTksNyArMTE5LDE4IEBAIHN0YXRpYyBpbmxpbmUgZmxv
YXQgcGFyZW50Wm9vbUZhY3RvcihGcmEKICAgICBGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJl
bnQtPnZpZXcoKTsKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybiAxOwotICAg
IHJldHVybiBwYXJlbnRWaWV3LT56b29tRmFjdG9yKCk7CisgICAgcmV0dXJuIHBhcmVudFZpZXct
PnBhZ2Vab29tRmFjdG9yKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQgcGFyZW50VGV4dFpv
b21GYWN0b3IoRnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1lKiBwYXJlbnQgPSBmcmFtZS0+dHJl
ZSgpLT5wYXJlbnQoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
RnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFyZW50LT52aWV3KCk7CisgICAgaWYgKCFwYXJlbnRW
aWV3KQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gcGFyZW50Vmlldy0+dGV4dFpvb21G
YWN0b3IoKTsKIH0KIAogRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUqIGZyYW1lKQpAQCAtMTQ1
LDcgKzE1Niw5IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFtZSkKICAgICAsIG1f
ZGVmZXJTZXROZWVkc0xheW91dHMoMCkKICAgICAsIG1fc2V0TmVlZHNMYXlvdXRXYXNEZWZlcnJl
ZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsQ29ybmVyKDApCi0gICAgLCBtX3pvb21GYWN0b3IocGFy
ZW50Wm9vbUZhY3RvcihmcmFtZSkpCisgICAgLCBtX3BhZ2Vab29tRmFjdG9yKHBhcmVudFBhZ2Va
b29tRmFjdG9yKGZyYW1lKSkKKyAgICAsIG1fdGV4dFpvb21GYWN0b3IocGFyZW50VGV4dFpvb21G
YWN0b3IoZnJhbWUpKQorCiB7CiAgICAgaW5pdCgpOwogfQpAQCAtMjI3NSwyOCArMjI4OCwyMSBA
QCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29udGFpbmluCiAgICAgcmV0dXJuIHBh
cmVudFBvaW50OwogfQogCi1ib29sIEZyYW1lVmlldzo6c2hvdWxkQXBwbHlUZXh0Wm9vbSgpIGNv
bnN0Cit2b2lkIEZyYW1lVmlldzo6c2V0UGFnZVpvb21GYWN0b3IoZmxvYXQgZmFjdG9yKQogewot
ICAgIGlmIChtX3pvb21GYWN0b3IgPT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1v
ZGUoKSA9PSBab29tVGV4dE9ubHk7CisgICAgc2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhmYWN0
b3IsIG1fdGV4dFpvb21GYWN0b3IpOwogfQogCi1ib29sIEZyYW1lVmlldzo6c2hvdWxkQXBwbHlQ
YWdlWm9vbSgpIGNvbnN0Cit2b2lkIEZyYW1lVmlldzo6c2V0VGV4dFpvb21GYWN0b3IoZmxvYXQg
ZmFjdG9yKQogewotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gMSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+c2V0dGlu
Z3MoKS0+em9vbU1vZGUoKSA9PSBab29tUGFnZTsKKyAgICBzZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKG1fcGFnZVpvb21GYWN0b3IsIGZhY3Rvcik7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRa
b29tRmFjdG9yKGZsb2F0IHBlcmNlbnQsIFpvb21Nb2RlIG1vZGUpCit2b2lkIEZyYW1lVmlldzo6
c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhmbG9hdCBwYWdlWm9vbUZhY3RvciwgZmxvYXQgdGV4
dFpvb21GYWN0b3IpCiB7CisgICAgaWYgKG1fcGFnZVpvb21GYWN0b3IgPT0gcGFnZVpvb21GYWN0
b3IgJiYgbV90ZXh0Wm9vbUZhY3RvciA9PSB0ZXh0Wm9vbUZhY3RvcikKKyAgICAgICAgcmV0dXJu
OworCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzMDQsOSArMjMx
MCw2IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRab29tRmFjdG9yKGZsb2F0IHBlcmMKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gcGVyY2Vu
dCAmJiBwYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IG1vZGUpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMyMiwyOCArMjMyNSwyNyBAQCB2
b2lkIEZyYW1lVmlldzo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjCiAgICAgfQogI2VuZGlmCiAK
LSAgICBpZiAobW9kZSA9PSBab29tUGFnZSkgeworICAgIGlmIChtX3BhZ2Vab29tRmFjdG9yICE9
IHBhZ2Vab29tRmFjdG9yKSB7CiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9u
IHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwgc28gdGhlIGNvbnRlbnQgc3RheXMgaW4gcmVs
YXRpdmVseSB0aGUgc2FtZSBwb3NpdGlvbi4KICAgICAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRp
b24gPSB0aGlzLT5zY3JvbGxQb3NpdGlvbigpOwotICAgICAgICBmbG9hdCBwZXJjZW50RGlmZmVy
ZW5jZSA9IChwZXJjZW50IC8gbV96b29tRmFjdG9yKTsKKyAgICAgICAgZmxvYXQgcGVyY2VudERp
ZmZlcmVuY2UgPSAocGFnZVpvb21GYWN0b3IgLyBtX3BhZ2Vab29tRmFjdG9yKTsKICAgICAgICAg
c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc2Nyb2xsUG9zaXRpb24ueCgpICogcGVyY2VudERp
ZmZlcmVuY2UsIHNjcm9sbFBvc2l0aW9uLnkoKSAqIHBlcmNlbnREaWZmZXJlbmNlKSk7CiAgICAg
fQogCi0gICAgbV96b29tRmFjdG9yID0gcGVyY2VudDsKLSAgICBwYWdlLT5zZXR0aW5ncygpLT5z
ZXRab29tTW9kZShtb2RlKTsKKyAgICBtX3BhZ2Vab29tRmFjdG9yID0gcGFnZVpvb21GYWN0b3I7
CisgICAgbV90ZXh0Wm9vbUZhY3RvciA9IHRleHRab29tRmFjdG9yOwogCiAgICAgZG9jdW1lbnQt
PnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsKIAogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9m
cmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkt
Pm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogY2hpbGRWaWV3ID0gY2hp
bGQtPnZpZXcoKSkKLSAgICAgICAgICAgIGNoaWxkVmlldy0+c2V0Wm9vbUZhY3RvcihtX3pvb21G
YWN0b3IsIG1vZGUpOworICAgICAgICAgICAgY2hpbGRWaWV3LT5zZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpOwogICAgIH0KIAogICAg
IGlmIChkb2N1bWVudC0+cmVuZGVyZXIoKSAmJiBkb2N1bWVudC0+cmVuZGVyZXIoKS0+bmVlZHNM
YXlvdXQoKSAmJiBkaWRGaXJzdExheW91dCgpKQogICAgICAgICBsYXlvdXQoKTsKIH0KIAotCiAv
LyBOb3JtYWwgZGVsYXkKIHZvaWQgRnJhbWVWaWV3OjpzZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVy
cmVkUmVwYWludERlbGF5KGRvdWJsZSBwKQogewpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gNjcx
MTkpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNywx
MiArMjE3LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKFJl
bmRlclNjcm9sbGJhclBhcnQqIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxD
b3JuZXIgPT0gc2Nyb2xsQ29ybmVyOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVy
KCk7CiAKLSAgICB2b2lkIHNldFpvb21GYWN0b3IoZmxvYXQgc2NhbGUsIFpvb21Nb2RlKTsKLSAg
ICBmbG9hdCB6b29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV96b29tRmFjdG9yOyB9Ci0gICAg
Ym9vbCBzaG91bGRBcHBseVRleHRab29tKCkgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRBcHBseVBh
Z2Vab29tKCkgY29uc3Q7Ci0gICAgZmxvYXQgcGFnZVpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVy
biBzaG91bGRBcHBseVBhZ2Vab29tKCkgPyBtX3pvb21GYWN0b3IgOiAxLjBmOyB9Ci0gICAgZmxv
YXQgdGV4dFpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBzaG91bGRBcHBseVRleHRab29tKCkg
PyBtX3pvb21GYWN0b3IgOiAxLjBmOyB9CisgICAgdm9pZCBzZXRQYWdlWm9vbUZhY3RvcihmbG9h
dCBmYWN0b3IpOworICAgIGZsb2F0IHBhZ2Vab29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlWm9vbUZhY3RvcjsgfQorICAgIHZvaWQgc2V0VGV4dFpvb21GYWN0b3IoZmxvYXQgZmFjdG9y
KTsKKyAgICBmbG9hdCB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0ICB7IHJldHVybiBtX3RleHRab29t
RmFjdG9yOyB9CisgICAgdm9pZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGZsb2F0IHBhZ2Va
b29tRmFjdG9yLCBmbG9hdCB0ZXh0Wm9vbUZhY3Rvcik7CiAKICAgICAvLyBOb3JtYWwgZGVsYXkK
ICAgICBzdGF0aWMgdm9pZCBzZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVycmVkUmVwYWludERlbGF5
KGRvdWJsZSBwKTsKQEAgLTM3Myw3ICszNzIsOCBAQCBwcml2YXRlOgogICAgIC8vIFJlbmRlcmVy
IHRvIGhvbGQgb3VyIGN1c3RvbSBzY3JvbGwgY29ybmVyLgogICAgIFJlbmRlclNjcm9sbGJhclBh
cnQqIG1fc2Nyb2xsQ29ybmVyOwogCi0gICAgZmxvYXQgbV96b29tRmFjdG9yOworICAgIGZsb2F0
IG1fcGFnZVpvb21GYWN0b3I7CisgICAgZmxvYXQgbV90ZXh0Wm9vbUZhY3RvcjsKIAogICAgIHN0
YXRpYyBkb3VibGUgc19kZWZlcnJlZFJlcGFpbnREZWxheTsKICAgICBzdGF0aWMgZG91YmxlIHNf
aW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NSw3ICs3NSw2IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQog
ICAgICwgbV9zZXNzaW9uU3RvcmFnZVF1b3RhKFN0b3JhZ2VNYXA6Om5vUXVvdGEpCiAjZW5kaWYK
ICAgICAsIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUobnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKLSAgICAsIG1fem9vbU1vZGUoWm9vbVBhZ2UpCiAgICAgLCBtX2lzU3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKGZhbHNlKQogICAgICwgbV9pc0phdmFFbmFibGVkKGZhbHNlKQogICAgICwg
bV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCkBAIC01MTEsMTUgKzUxMCw2IEBAIHZv
aWQgU2V0dGluZ3M6OnNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2wKICAgICBtX3Nob3VsZFBhaW50
Q3VzdG9tU2Nyb2xsYmFycyA9IHNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFyczsKIH0KIAotdm9p
ZCBTZXR0aW5nczo6c2V0Wm9vbU1vZGUoWm9vbU1vZGUgbW9kZSkKLXsKLSAgICBpZiAobW9kZSA9
PSBtX3pvb21Nb2RlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV96b29tTW9kZSA9IG1v
ZGU7Ci0gICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKG1fcGFnZSk7Ci19Ci0KIHZv
aWQgU2V0dGluZ3M6OnNldEVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKGJvb2wgZW5m
b3JjZUNTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUpCiB7CiAgICAgbV9lbmZvcmNlQ1NTTUlNRVR5
cGVJbk5vUXVpcmtzTW9kZSA9IGVuZm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlOwpJbmRl
eDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgJKHJldmlzaW9uIDY3MTE5KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJFZGl0aW5nQmVoYXZpb3JU
eXBlcy5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgotI2luY2x1ZGUgIlpvb21Nb2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1MSw5ICsyNTAsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRTaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMo
Ym9vbCk7CiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnM7IH0KLQotICAgICAgICB2b2lk
IHNldFpvb21Nb2RlKFpvb21Nb2RlKTsKLSAgICAgICAgWm9vbU1vZGUgem9vbU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3pvb21Nb2RlOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEVuZm9y
Y2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKGJvb2wpOwogICAgICAgICBib29sIGVuZm9yY2VD
U1NNSU1FVHlwZUluTm9RdWlya3NNb2RlKCkgeyByZXR1cm4gbV9lbmZvcmNlQ1NTTUlNRVR5cGVJ
bk5vUXVpcmtzTW9kZTsgfQpAQCAtMzU0LDcgKzM1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdW5zaWduZWQgbV9zZXNzaW9uU3RvcmFnZVF1b3RhOwogI2VuZGlmCiAgICAgICAg
IHVuc2lnbmVkIG1fcGx1Z2luQWxsb3dlZFJ1blRpbWU7Ci0gICAgICAgIFpvb21Nb2RlIG1fem9v
bU1vZGU7CiAgICAgICAgIGJvb2wgbV9pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCA6IDE7CiAg
ICAgICAgIGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1h
Z2VzQXV0b21hdGljYWxseSA6IDE7CkluZGV4OiBXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaAkocmV2aXNpb24gNjcxMTkpCisrKyBX
ZWJDb3JlL3BhZ2UvWm9vbU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIGluIE1vdGlvbiBMdGQuIGh0dHA6Ly93
d3cucmltLmNvbS8KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI2lmbmRlZiBab29tTW9kZV9oCi0jZGVmaW5lIFpvb21Nb2RlX2gKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIFpvb21Nb2RlIHsKLSAgICBab29tUGFnZSwKLSAgICBa
b29tVGV4dE9ubHkKLX07Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjY1LDkgKzY2NSw3IEBAIGludCBSZW5kZXJWaWV3Ojp2aWV3
V2lkdGgoKSBjb25zdAogCiBmbG9hdCBSZW5kZXJWaWV3Ojp6b29tRmFjdG9yKCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fZnJhbWVWaWV3LT5zaG91bGRBcHBseVBhZ2Vab29tKCkpCi0gICAgICAgIHJl
dHVybiAxOwotICAgIHJldHVybiBtX2ZyYW1lVmlldy0+em9vbUZhY3RvcigpOworICAgIHJldHVy
biBtX2ZyYW1lVmlldy0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAogLy8gVGhlIGlkZWEgaGVyZSBp
cyB0byB0YWtlIGludG8gYWNjb3VudCB3aGF0IG9iamVjdCBpcyBtb3ZpbmcgdGhlIHBhZ2luYXRp
b24gcG9pbnQsIGFuZApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDY3MTE5KQor
KysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3
ICsyMDQsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZShmbG9hCiAgICAg
ICAgIC8vIENhbGxpbmcgc2V0Q3VycmVudFNjYWxlKCkgb24gdGhlIG91dGVybW9zdCA8c3ZnPiBl
bGVtZW50IGluIGEgc3RhbmRhbG9uZSBTVkcgZG9jdW1lbnQKICAgICAgICAgLy8gaXMgYWxsb3dl
ZCB0byBjaGFuZ2UgdGhlIHBhZ2Ugem9vbSBmYWN0b3IsIGluZmx1ZW5jaW5nIHRoZSBkb2N1bWVu
dCBzaXplLCBzY3JvbGxiYXJzIGV0Yy4KICAgICAgICAgaWYgKHBhcmVudE5vZGUoKSA9PSBkb2N1
bWVudCgpKQotICAgICAgICAgICAgdmlldy0+c2V0Wm9vbUZhY3RvcihzY2FsZSwgWm9vbVBhZ2Up
OworICAgICAgICAgICAgdmlldy0+c2V0UGFnZVpvb21GYWN0b3Ioc2NhbGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNjcxNjUpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEwLTA5LTEwICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9v
c2luZyBlaXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFnZSB6b29tLgorICAgICAgICBQcmVjdXJz
b3IgdG8gPHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisgICAgICAgIE5vdyB0aGF0IFdlYkNvcmUg
ZG9lc24ndCByZXF1aXJlIGEgbW9kZSwgY2hhbmdlIHRoZSBidW5kbGUgQVBJIGZvciB6b29tIHRv
IG5vdAorICAgICAgICByZXF1aXJlIG9uZSBlaXRoZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdL
QnVuZGxlUGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUdldFRleHRab29t
RmFjdG9yKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKToKKyAgICAg
ICAgKFdLQnVuZGxlUGFnZUdldFBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldFBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0ZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGFnZVpvb21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRQYWdlWm9vbUZh
Y3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxMC0w
OS0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkocmV2aXNpb24g
NjcxMTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRBZmZpbml0eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlwdFR5cGVzLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9ab29tTW9kZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTU3R5
bGVEZWNsYXJhdGlvbjsKQEAgLTExOCwxOSArMTE3LDYgQEAgaW5saW5lIFdLQWZmaW5pdHlUeXBl
IHRvV0soV2ViQ29yZTo6RUFmZgogICAgIHJldHVybiBrV0tBZmZpbml0eVVwc3RyZWFtOwogfQog
Ci1pbmxpbmUgV2ViQ29yZTo6Wm9vbU1vZGUgdG9ab29tTW9kZShXS0J1bmRsZVBhZ2Vab29tTW9k
ZSB3a1pvb21Nb2RlKQotewotICAgIHN3aXRjaCAod2tab29tTW9kZSkgewotICAgIGNhc2Uga1dL
QnVuZGxlUGFnZVpvb21Nb2RlVGV4dE9ubHk6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpab29t
VGV4dE9ubHk7Ci0gICAgY2FzZSBrV0tCdW5kbGVQYWdlWm9vbU1vZGVQYWdlOgotICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Wm9vbVBhZ2U7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Olpvb21UZXh0T25seTsKLX0KLQogaW5saW5lIFdlYkNv
cmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSB3a0luamVjdGVkVGltZSkKIHsKICAgICBzd2l0Y2ggKHdr
SW5qZWN0ZWRUaW1lKSB7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gNjcxMTkpCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTEgQEAgV0tCdW5kbGVGcmFtZVJlZiBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbQogICAgIHJldHVybiB0b1JlZih0b1dLKHBhZ2VSZWYpLT5tYWlu
RnJhbWUoKSk7CiB9CiAKK3ZvaWQgV0tCdW5kbGVQYWdlU3RvcExvYWRpbmcoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYpCit7CisgICAgdG9XSyhwYWdlUmVmKS0+c3RvcExvYWRpbmcoKTsKK30KKwog
V0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlQ29weVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHJldHVybiB0b0NvcGllZFJlZih0
b1dLKHBhZ2VSZWYpLT5yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpKTsKQEAgLTk1
LDIyICsxMDAsMjIgQEAgdm9pZCBXS0J1bmRsZVBhZ2VDbG9zZShXS0J1bmRsZVBhZ2VSZWYgcAog
ICAgIHRvV0socGFnZVJlZiktPnNlbmRDbG9zZSgpOwogfQogCi1mbG9hdCBXS0J1bmRsZVBhZ2VH
ZXRab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQorZmxvYXQgV0tCdW5kbGVQYWdl
R2V0VGV4dFpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvV0socGFnZVJlZiktPnpvb21GYWN0b3IoKTsKKyAgICByZXR1cm4gdG9XSyhwYWdlUmVmKS0+
dGV4dFpvb21GYWN0b3IoKTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTZXRab29tRmFjdG9yKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBmbG9hdCB6b29tRmFjdG9yKQordm9pZCBXS0J1bmRsZVBh
Z2VTZXRUZXh0Wm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgZmxvYXQgem9vbUZh
Y3RvcikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IpOwor
ICAgIHRvV0socGFnZVJlZiktPnNldFRleHRab29tRmFjdG9yKHpvb21GYWN0b3IpOwogfQogCi12
b2lkIFdLQnVuZGxlUGFnZVNldFpvb21Nb2RlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2Vab29tTW9kZSB6b29tTW9kZSkKK2Zsb2F0IFdLQnVuZGxlUGFnZUdldFBhZ2Vab29t
RmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvV0socGFnZVJlZiktPnNl
dFpvb21Nb2RlKHRvWm9vbU1vZGUoem9vbU1vZGUpKTsKKyAgICByZXR1cm4gdG9XSyhwYWdlUmVm
KS0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTdG9wTG9hZGluZyhX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0
b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGZsb2F0IHpvb21GYWN0b3IpCiB7Ci0gICAgdG9X
SyhwYWdlUmVmKS0+c3RvcExvYWRpbmcoKTsKKyAgICB0b1dLKHBhZ2VSZWYpLT5zZXRQYWdlWm9v
bUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAko
cmV2aXNpb24gNjcxMTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMyArMzMsMTgg
QEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLWVudW0gV0tCdW5kbGVQYWdlWm9vbU1vZGUgewot
ICAgIGtXS0J1bmRsZVBhZ2Vab29tTW9kZVBhZ2UgPSAwLAotICAgIGtXS0J1bmRsZVBhZ2Vab29t
TW9kZVRleHRPbmx5ID0gMQotfTsKLXR5cGVkZWYgZW51bSBXS0J1bmRsZVBhZ2Vab29tTW9kZSBX
S0J1bmRsZVBhZ2Vab29tTW9kZTsKLQorV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU3RvcExv
YWRpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdl
SXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IGNvbW1hbmROYW1lKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNsZWFyTWFpbkZyYW1l
TmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VD
bG9zZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5k
bGVQYWdlQ29weVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUV4ZWN1dGVFZGl0aW5nQ29tbWFu
ZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgY29tbWFuZE5hbWUsIFdLU3RyaW5n
UmVmIGFyZ3VtZW50KTsKIAotV0tfRVhQT1JUIGZsb2F0IFdLQnVuZGxlUGFnZUdldFpvb21GYWN0
b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0
Wm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZmxvYXQgem9vbUZhY3Rvcik7Ci1XS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRab29tTW9kZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVQYWdlWm9vbU1vZGUgem9vbU1vZGUpOworV0tfRVhQT1JUIGZsb2F0IFdLQnVuZGxl
UGFnZUdldFRleHRab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2
b2lkIFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBm
bG9hdCB6b29tRmFjdG9yKTsKK1dLX0VYUE9SVCBmbG9hdCBXS0J1bmRsZVBhZ2VHZXRQYWdlWm9v
bUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBh
Z2VTZXRQYWdlWm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZmxvYXQgem9vbUZhY3Rv
cik7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVN0b3BMb2FkaW5nKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gNjcxMTkpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw2
IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBtX3BhZ2Ut
PnNldHRpbmdzKCktPnNldEZpeGVkRm9udEZhbWlseShzdG9yZS5maXhlZEZvbnRGYW1pbHkpOwog
ICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShzdG9yZS5zYW5z
U2VyaWZGb250RmFtaWx5KTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFNlcmlmRm9udEZh
bWlseShzdG9yZS5zZXJpZkZvbnRGYW1pbHkpOwotCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5z
ZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHRydWUpOwogCiAgICAgbV9w
YWdlLT5zZXRHcm91cE5hbWUoIldlYktpdDJHcm91cCIpOwpAQCAtMzAzLDI3ICszMDIsNDAgQEAg
dm9pZCBXZWJQYWdlOjpkcmF3UmVjdChHcmFwaGljc0NvbnRleHQmIAogICAgIGdyYXBoaWNzQ29u
dGV4dC5yZXN0b3JlKCk7CiB9CiAKLWZsb2F0IFdlYlBhZ2U6Onpvb21GYWN0b3IoKSBjb25zdAor
ZmxvYXQgV2ViUGFnZTo6dGV4dFpvb21GYWN0b3IoKSBjb25zdAogewogICAgIGlmIChGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpKSB7CiAgICAgICAgIGlmIChGcmFt
ZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHJldHVybiB2aWV3
LT56b29tRmFjdG9yKCk7CisgICAgICAgICAgICByZXR1cm4gdmlldy0+dGV4dFpvb21GYWN0b3Io
KTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIDEuMGY7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0
Wm9vbUZhY3RvcihmbG9hdCB6b29tRmFjdG9yKQordm9pZCBXZWJQYWdlOjpzZXRUZXh0Wm9vbUZh
Y3RvcihmbG9hdCB6b29tRmFjdG9yKQoreworICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpKSB7CisgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBj
b3JlRnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB2aWV3LT5zZXRUZXh0Wm9vbUZh
Y3Rvcih6b29tRmFjdG9yKTsKKyAgICB9Cit9CisKK2Zsb2F0IFdlYlBhZ2U6OnBhZ2Vab29tRmFj
dG9yKCkgY29uc3QKIHsKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52
aWV3KCkpCi0gICAgICAgICAgICByZXR1cm4gdmlldy0+c2V0Wm9vbUZhY3Rvcih6b29tRmFjdG9y
LCBtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIHZp
ZXctPnBhZ2Vab29tRmFjdG9yKCk7CiAgICAgfQorICAgIAorICAgIHJldHVybiAxLjBmOwogfQog
Ci12b2lkIFdlYlBhZ2U6OnNldFpvb21Nb2RlKFpvb21Nb2RlIG1vZGUpCit2b2lkIFdlYlBhZ2U6
OnNldFBhZ2Vab29tRmFjdG9yKGZsb2F0IHpvb21GYWN0b3IpCiB7Ci0gICAgbV9wYWdlLT5zZXR0
aW5ncygpLT5zZXRab29tTW9kZShtb2RlKTsKKyAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
Y29yZUZyYW1lLT52aWV3KCkpCisgICAgICAgICAgICByZXR1cm4gdmlldy0+c2V0UGFnZVpvb21G
YWN0b3Ioem9vbUZhY3Rvcik7CisgICAgfQogfQogCiAvLyBFdmVudHMgCkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiA2NzExOSkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgIldlYkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9ab29tTW9kZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0xMjYsOSArMTI1LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyTWFpbkZyYW1lTmFtZSgpOwogICAgIHZvaWQgc2Vu
ZENsb3NlKCk7CiAKLSAgICBmbG9hdCB6b29tRmFjdG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRa
b29tRmFjdG9yKGZsb2F0KTsKLSAgICB2b2lkIHNldFpvb21Nb2RlKFdlYkNvcmU6Olpvb21Nb2Rl
KTsKKyAgICBmbG9hdCB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgc2V0VGV4dFpv
b21GYWN0b3IoZmxvYXQpOworICAgIGZsb2F0IHBhZ2Vab29tRmFjdG9yKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRQYWdlWm9vbUZhY3RvcihmbG9hdCk7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7
CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjcyMjUpCisrKyBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMTAgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY29uc3RyYWludCBpbiBXZWJD
b3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0IHpvb20gb3IgZnVsbCBwYWdlIHpvb20uCisgICAg
ICAgIFByZWN1cnNvciB0byA8cmRhcjovL3Byb2JsZW0vNzY2MDY1Nz4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTIyCisKKyAgICAgICAgKiBzcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnRJbXBsOjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRab29tTGV2ZWwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6em9vbVRleHRPbmx5KToKKyAg
ICAgICAgTW92ZSB0cmFja2luZyBvZiB0ZXh0IG9ubHkgem9vbSBoZXJlIGZyb20gV2ViQ29yZS4K
KwogMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OTgsMTIgKzEzOTgsMTIgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50SW1w
bAogICAgIGlmICghd2ViUGx1Z2luLT5pbml0aWFsaXplKGNvbnRhaW5lci5nZXQoKSkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fd2ViRnJhbWUtPmZyYW1lKCktPnZpZXcoKS0+em9v
bUZhY3RvcigpICE9IDEpIHsKKyAgICBib29sIHpvb21UZXh0T25seSA9IG1fd2ViRnJhbWUtPnZp
ZXdJbXBsKCktPnpvb21UZXh0T25seSgpOworICAgIGZsb2F0IHpvb21GYWN0b3IgPSB6b29tVGV4
dE9ubHkgPyBtX3dlYkZyYW1lLT5mcmFtZSgpLT52aWV3KCktPnRleHRab29tRmFjdG9yKCkgOiBt
X3dlYkZyYW1lLT5mcmFtZSgpLT52aWV3KCktPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgaWYgKHpv
b21GYWN0b3IgIT0gMSkgewogICAgICAgICAvLyBUaGVyZSdzIGEgc2F2ZWQgem9vbSBsZXZlbCwg
c28gdGVsbCB0aGUgcGx1Z2luIGFib3V0IGl0IHNpbmNlCiAgICAgICAgIC8vIFdlYlZpZXdJbXBs
OjpzZXRab29tTGV2ZWwgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIHBsdWdpbiB3YXMgY3JlYXRlZC4K
LSAgICAgICAgd2ViUGx1Z2luLT5zZXRab29tRmFjdG9yKAotICAgICAgICAgICAgbV93ZWJGcmFt
ZS0+ZnJhbWUoKS0+dmlldygpLT56b29tRmFjdG9yKCksCi0gICAgICAgICAgICBtX3dlYkZyYW1l
LT5mcmFtZSgpLT5wYWdlKCktPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5
KTsKKyAgICAgICAgd2ViUGx1Z2luLT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHpvb21UZXh0
T25seSk7CiAgICAgfQogCiAgICAgLy8gVGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92
ZWQgZHVyaW5nIHBsdWdpbiBpbml0aWFsaXphdGlvbiEKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDcgQEAgV2ViVmlld0lt
cGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIAogICAgICwgbV9uZXdOYXZpZ2F0aW9uTG9h
ZGVyKDApCiAjZW5kaWYKICAgICAsIG1fem9vbUxldmVsKDApCisgICAgLCBtX3pvb21UZXh0T25s
eShmYWxzZSkKICAgICAsIG1fY29udGV4dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2lu
Z0RyYWdBbmREcm9wKGZhbHNlKQogICAgICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAg
LTE0NzcsMTMgKzE0NzgsMjMgQEAgaW50IFdlYlZpZXdJbXBsOjpzZXRab29tTGV2ZWwoYm9vbCB0
ZXh0TwogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3
KQogICAgICAgICByZXR1cm4gbV96b29tTGV2ZWw7Ci0gICAgaWYgKHpvb21GYWN0b3IgIT0gdmll
dy0+em9vbUZhY3RvcigpKSB7Ci0gICAgICAgIHZpZXctPnNldFpvb21GYWN0b3Ioem9vbUZhY3Rv
ciwgdGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CisKKyAgICBmbG9hdCBvbGRa
b29tRmFjdG9yID0gbV96b29tVGV4dE9ubHkgPyB2aWV3LT50ZXh0Wm9vbUZhY3RvcigpIDogcGFn
ZS0+dGV4dFpvb21GYWN0b3IoKTsKKworICAgIGlmICh0ZXh0T25seSkKKyAgICAgICAgdmlldy0+
c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycygxLCB6b29tRmFjdG9yKTsKKyAgICBlbHNlCisgICAg
ICAgIHZpZXctPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoem9vbUZhY3RvciwgMSk7CisKKyAg
ICBpZiAob2xkWm9vbUZhY3RvciAhPSB6b29tRmFjdG9yIHx8IHRleHRPbmx5ICE9IG1fem9vbVRl
eHRPbmx5KSB7CiAgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5l
ciA9IFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZyYW1lKTsKICAgICAg
ICAgaWYgKHBsdWdpbkNvbnRhaW5lcikKICAgICAgICAgICAgIHBsdWdpbkNvbnRhaW5lci0+cGx1
Z2luKCktPnNldFpvb21GYWN0b3Ioem9vbUZhY3RvciwgdGV4dE9ubHkpOwotICAgICAgICBtX3pv
b21MZXZlbCA9IHpvb21MZXZlbDsKICAgICB9CisKKyAgICBtX3pvb21MZXZlbCA9IHpvb21MZXZl
bDsKKyAgICBtX3pvb21UZXh0T25seSA9IHRleHRPbmx5OworCiAgICAgcmV0dXJuIG1fem9vbUxl
dmVsOwogfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA2NzEx
NikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMzM3LDYgKzMzNyw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBvcHVwQ29udGFpbmVy
KiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0KCk7IH0KIAor
ICAgIGJvb2wgem9vbVRleHRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV96b29tVGV4dE9ubHk7IH0K
KwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgbGVhZHMgdG8gc2Nyb2xsaW5nLgog
ICAgIHN0YXRpYyBib29sIG1hcEtleUNvZGVGb3JTY3JvbGwoaW50IGtleUNvZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiogc2Ny
b2xsRGlyZWN0aW9uLApAQCAtNDMzLDYgKzQzNSw4IEBAIHByaXZhdGU6CiAgICAgLy8gbWVhbiB6
b29tIGluLCBuZWdhdGl2ZSBudW1iZXJzIG1lYW4gem9vbSBvdXQuCiAgICAgaW50IG1fem9vbUxl
dmVsOwogCisgICAgYm9vbCBtX3pvb21UZXh0T25seTsKKwogICAgIGJvb2wgbV9jb250ZXh0TWVu
dUFsbG93ZWQ7CiAKICAgICBib29sIG1fZG9pbmdEcmFnQW5kRHJvcDsKSW5kZXg6IFdlYktpdC9n
dGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biA2NzIyNSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTAtMDktMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW5uZWNl
c3NhcnkgY29uc3RyYWludCBpbiBXZWJDb3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0IHpvb20g
b3IgZnVsbCBwYWdlIHpvb20uCisgICAgICAgIFByZWN1cnNvciB0byA8cmRhcjovL3Byb2JsZW0v
NzY2MDY1Nz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ1NTIyCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2FwcGx5X3pvb21fbGV2ZWwpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9mdWxsX2Nv
bnRlbnRfem9vbSk6CisKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDc5LDcgKzQwNzksOCBAQCBn
ZmxvYXQgd2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVsKFdlCiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm4gMTsKIAotICAgIHJldHVybiB2aWV3LT56b29tRmFjdG9yKCk7CisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBw
cml2LT56b29tRnVsbENvbnRlbnQgPyB2aWV3LT5wYWdlWm9vbUZhY3RvcigpIDogdmlldy0+dGV4
dFpvb21GYWN0b3IoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2FwcGx5X3pv
b21fbGV2ZWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZ2Zsb2F0IHpvb21MZXZlbCkKQEAgLTQw
OTMsNyArNDA5NCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYXBwbHlfem9vbV9s
CiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2Vi
Vmlldy0+cHJpdjsKLSAgICB2aWV3LT5zZXRab29tRmFjdG9yKHpvb21MZXZlbCwgcHJpdi0+em9v
bUZ1bGxDb250ZW50ID8gWm9vbVBhZ2UgOiBab29tVGV4dE9ubHkpOworICAgIGlmIChwcml2LT56
b29tRnVsbENvbnRlbnQpCisgICAgICAgIHZpZXctPnNldFBhZ2Vab29tRmFjdG9yKHpvb21MZXZl
bCk7CisgICAgZWxzZQorICAgICAgICB2aWV3LT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tTGV2ZWwp
OyAgICAgICAgCiB9CiAKIC8qKgpAQCAtNDE5Niw4ICs0MjAwLDIxIEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3NldF9mdWxsX2NvbnRlbnRfem8KICAgICBpZiAocHJpdi0+em9vbUZ1bGxDb250ZW50
ID09IHpvb21GdWxsQ29udGVudCkKICAgICAgIHJldHVybjsKIAorICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICByZXR1
cm47CisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmll
dykKKyAgICAgIHJldHVybjsKKworICAgIGdmbG9hdCB6b29tTGV2ZWwgPSBwcml2LT56b29tRnVs
bENvbnRlbnQgPyB2aWV3LT5wYWdlWm9vbUZhY3RvcigpIDogdmlldy0+dGV4dFpvb21GYWN0b3Io
KTsKKwogICAgIHByaXYtPnpvb21GdWxsQ29udGVudCA9IHpvb21GdWxsQ29udGVudDsKLSAgICB3
ZWJraXRfd2ViX3ZpZXdfYXBwbHlfem9vbV9sZXZlbCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3pvb21fbGV2ZWwod2ViVmlldykpOworICAgIGlmIChwcml2LT56b29tRnVsbENvbnRlbnQp
CisgICAgICAgIHZpZXctPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobXVsdGlwbGllciwgMSk7
CisgICAgZWxzZQorICAgICAgICB2aWV3LT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKDEsIG11
bHRpcGxpZXIpOwogCiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAiZnVs
bC1jb250ZW50LXpvb20iKTsKIH0KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NzIyNSkKKysrIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMTAg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY29uc3RyYWludCBpbiBX
ZWJDb3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0IHpvb20gb3IgZnVsbCBwYWdlIHpvb20uCisg
ICAgICAgIFByZWN1cnNvciB0byA8cmRhcjovL3Byb2JsZW0vNzY2MDY1Nz4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTIyCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Wm9vbU11bHRpcGxpZXI6
aXNUZXh0T25seTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVhbFpvb21NdWx0aXBsaWVySXNU
ZXh0T25seV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6
CisgICAgICAgIE1vdmUgdHJhY2tpbmcgb2YgdGV4dCBvbmx5IHpvb20gaGVyZSBmcm9tIFdlYkNv
cmUuCisKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShy
ZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDI3LDcgKzE0MjcsNiBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWRO
b3RpZmljYXRpb246CiAgICAgc2V0dGluZ3MtPnNldFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVk
KFtwcmVmZXJlbmNlcyB3ZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZF0pOwogICAgIHNldHRpbmdz
LT5zZXRMb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2NhbEZp
bGVDb250ZW50U25pZmZpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChbcHJlZmVyZW5jZXMgb2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkXSk7Ci0gICAgc2V0dGluZ3MtPnNldFpvb21Nb2RlKFtwcmVmZXJlbmNlcyB6
b29tc1RleHRPbmx5XSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKICAgICBzZXR0aW5ncy0+
c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChbcHJlZmVyZW5jZXMgamF2YVNjcmlwdENh
bkFjY2Vzc0NsaXBib2FyZF0pOwogICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChb
cHJlZmVyZW5jZXMgaXNYU1NBdWRpdG9yRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRFbmZv
cmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSghV0tBcHBWZXJzaW9uQ2hlY2tMZXNzVGhhbihA
ImNvbS5hcHBsZS5pV2ViIiwgLTEsIDIuMSkpOwpAQCAtMTQ1MCw2ICsxNDQ5LDEwIEBAIC0gKHZv
aWQpX3ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbjoKIAogICAgIC8vIEFwcGxpY2F0aW9u
IENhY2hlIFByZWZlcmVuY2VzIGFyZSBzdG9yZWQgb24gdGhlIGdsb2JhbCBjYWNoZSBzdG9yYWdl
IG1hbmFnZXIsIG5vdCBpbiBTZXR0aW5ncy4KICAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBzZXRE
ZWZhdWx0T3JpZ2luUXVvdGE6W3ByZWZlcmVuY2VzIGFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3Jp
Z2luUXVvdGFdXTsKKworICAgIEJPT0wgem9vbXNUZXh0T25seSA9IFtwcmVmZXJlbmNlcyB6b29t
c1RleHRPbmx5XTsKKyAgICBpZiAoX3ByaXZhdGUtPnpvb21zVGV4dE9ubHkgIT0gem9vbXNUZXh0
T25seSkKKyAgICAgICAgW3NlbGYgX3NldFpvb21NdWx0aXBsaWVyOl9wcml2YXRlLT56b29tTXVs
dGlwbGllciBpc1RleHRPbmx5Onpvb21zVGV4dE9ubHldOwogfQogCiBzdGF0aWMgaW5saW5lIElN
UCBnZXRNZXRob2QoaWQgbywgU0VMIHMpCkBAIC0zMjcyLDE3ICszMjc1LDE4IEBAIC0gKHZvaWQp
X3NldFpvb21NdWx0aXBsaWVyOihmbG9hdCltdWx0aXAKIHsKICAgICAvLyBOT1RFOiBUaGlzIGhh
cyBubyB2aXNpYmxlIGVmZmVjdCB3aGVuIHZpZXdpbmcgYSBQREYgKHNlZSA8cmRhcjovL3Byb2Js
ZW0vNDczNzM4MD4pCiAgICAgX3ByaXZhdGUtPnpvb21NdWx0aXBsaWVyID0gbXVsdGlwbGllcjsK
LQotICAgIEFTU0VSVChfcHJpdmF0ZS0+cGFnZSk7Ci0gICAgaWYgKF9wcml2YXRlLT5wYWdlKQot
ICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS0+c2V0Wm9vbU1vZGUoaXNUZXh0T25s
eSA/IFpvb21UZXh0T25seSA6IFpvb21QYWdlKTsKKyAgICBfcHJpdmF0ZS0+em9vbXNUZXh0T25s
eSA9IGlzVGV4dE9ubHk7CiAKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byByZXdv
cmsgdGhpcyBjb2RlIHNvIHRoYXQgX3ByaXZhdGUtPnpvb21NdWx0aXBsaWVyIGRvZXNuJ3QgZXhp
c3QKICAgICAvLyBhbmQgaW5zdGVhZCBGcmFtZVZpZXc6Onpvb21GYWN0b3IgaXMgdXNlZC4KICAg
ICBGcmFtZSogY29yZUZyYW1lID0gW3NlbGYgX21haW5Db3JlRnJhbWVdOwogICAgIGlmIChjb3Jl
RnJhbWUpIHsKLSAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygp
KQotICAgICAgICAgICAgdmlldy0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBpc1RleHRPbmx5
ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3
ID0gY29yZUZyYW1lLT52aWV3KCkpIHsKKyAgICAgICAgICAgIGlmIChfcHJpdmF0ZS0+em9vbXNU
ZXh0T25seSkKKyAgICAgICAgICAgICAgICB2aWV3LT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3Jz
KDEsIG11bHRpcGxpZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZpZXct
PnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobXVsdGlwbGllciwgMSk7CisgICAgICAgIH0KICAg
ICB9CiB9CiAKQEAgLTMzMDMsNyArMzMwNyw3IEBAIC0gKEJPT0wpX3JlYWxab29tTXVsdGlwbGll
cklzVGV4dE9ubHkKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4gTk87
CiAgICAgCi0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgp
ID09IFpvb21UZXh0T25seTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnpvb21zVGV4dE9ubHk7CiB9
CiAKICNkZWZpbmUgTWluaW11bVpvb21NdWx0aXBsaWVyICAgICAgIDAuNWYKSW5kZXg6IFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIEBpbnRlcmZh
Y2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgQk9PTCBhbGxvd3NVbmRvOwogICAg
ICAgICAKICAgICBmbG9hdCB6b29tTXVsdGlwbGllcjsKKyAgICBCT09MIHpvb21zVGV4dE9ubHk7
CiAKICAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OwogICAgIFdURjo6
U3RyaW5nIHVzZXJBZ2VudDsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0JKHJldmlz
aW9uIDY3MTE2KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIC0gKGlkKWluaXQgCiAgICAgY3NzQW5pbWF0aW9uc1N1
c3BlbmRlZCA9IE5POwogCiAgICAgem9vbU11bHRpcGxpZXIgPSAxOworICAgIHpvb21zVGV4dE9u
bHkgPSBOTzsKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBkYXNoYm9hcmRC
ZWhhdmlvckFsbG93V2hlZWxTY3JvbGxpbmcgPSBZRVM7CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDY3MjI1KQor
KysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDEwLTA5LTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvbnN0
cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBlaXRoZXIgdGV4dCB6b29tIG9yIGZ1bGwgcGFn
ZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8gPHJkYXI6Ly9wcm9ibGVtLzc2NjA2NTc+Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTUyMgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFRleHRT
aXplTXVsdGlwbGllcik6CisgICAgICAgIChRV2ViRnJhbWU6OnRleHRTaXplTXVsdGlwbGllcik6
CisgICAgICAgIChRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IpOgorICAgICAgICAoUVdlYkZyYW1l
Ojp6b29tRmFjdG9yKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKFFX
ZWJGcmFtZVByaXZhdGU6OlFXZWJGcmFtZVByaXZhdGUpOgorICAgICAgICBNb3ZlIHRyYWNraW5n
IG9mIHRleHQgb25seSB6b29tIGhlcmUgZnJvbSBXZWJDb3JlLgorCiAyMDEwLTA5LTEwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCShyZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwOSw3ICsxMTA5LDkgQEAg
dm9pZCBRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcihxcgogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlldy0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIFpvb21U
ZXh0T25seSk7CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRp
bmdzOjpab29tVGV4dE9ubHksIHRydWUpOworCisgICAgdmlldy0+c2V0UGFnZUFuZFRleHRab29t
RmFjdG9ycygxLCBmYWN0b3IpOwogfQogCiAvKiEKQEAgLTExMjEsNyArMTEyMyw3IEBAIHFyZWFs
IFFXZWJGcmFtZTo6dGV4dFNpemVNdWx0aXBsaWVyKCkgY28KICAgICBpZiAoIXZpZXcpCiAgICAg
ICAgIHJldHVybiAxOwogCi0gICAgcmV0dXJuIHZpZXctPnpvb21GYWN0b3IoKTsKKyAgICByZXR1
cm4gZC0+em9vbVRleHRPbmx5ID8gdmlldy0+dGV4dFpvb21GYWN0b3IoKSA6IHZpZXctPnBhZ2Va
b29tRmFjdG9yKCk7CiB9CiAKIC8qIQpAQCAtMTE0MCw3ICsxMTQyLDEwIEBAIHZvaWQgUVdlYkZy
YW1lOjpzZXRab29tRmFjdG9yKHFyZWFsIGZhY3QKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHZpZXctPnNldFpvb21GYWN0b3IoZmFjdG9yLCBwYWdlLT5zZXR0aW5ncygp
LT56b29tTW9kZSgpKTsKKyAgICBpZiAoZC0+em9vbVRleHRPbmx5KQorICAgICAgICB2aWV3LT5z
ZXRUZXh0Wm9vbUZhY3RvcihmYWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgdmlldy0+c2V0UGFn
ZVpvb21GYWN0b3IoZmFjdG9yKTsKIH0KIAogcXJlYWwgUVdlYkZyYW1lOjp6b29tRmFjdG9yKCkg
Y29uc3QKQEAgLTExNDksNyArMTE1NCw3IEBAIHFyZWFsIFFXZWJGcmFtZTo6em9vbUZhY3Rvcigp
IGNvbnN0CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHJldHVybiB2
aWV3LT56b29tRmFjdG9yKCk7CisgICAgcmV0dXJuIGQtPnpvb21UZXh0T25seSA/IHZpZXctPnRl
eHRab29tRmFjdG9yKCkgOiB2aWV3LT5wYWdlWm9vbUZhY3RvcigpOwogfQogCiAvKiEKSW5kZXg6
IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZV9wLmgJKHJldmlzaW9uIDY3MTE2KQorKysgV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWVfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtYXJnaW5XaWR0aCgtMSkKICAgICAgICAgLCBtYXJnaW5IZWlnaHQoLTEpCiAgICAgICAgICwg
aW5pdGlhbExheW91dENvbXBsZXRlKGZhbHNlKQorICAgICAgICAsIHpvb21UZXh0T25seShmYWxz
ZSkKICAgICAgICAge30KICAgICB2b2lkIGluaXQoUVdlYkZyYW1lKiBxZnJhbWUsIFFXZWJGcmFt
ZURhdGEqIGZyYW1lRGF0YSk7CiAgICAgdm9pZCBzZXRQYWdlKFFXZWJQYWdlKik7CkBAIC0xMDAs
NiArMTAxLDcgQEAgcHVibGljOgogICAgIGludCBtYXJnaW5XaWR0aDsKICAgICBpbnQgbWFyZ2lu
SGVpZ2h0OwogICAgIGJvb2wgaW5pdGlhbExheW91dENvbXBsZXRlOworICAgIGJvb2wgem9vbVRl
eHRPbmx5OwogfTsKIAogY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlIHsKSW5kZXg6IFdl
YktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2NzIyNSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDktMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgY29uc3RyYWludCBpbiBXZWJDb3JlIG9mIGNob29zaW5nIGVpdGhlciB0ZXh0
IHpvb20gb3IgZnVsbCBwYWdlIHpvb20uCisgICAgICAgIFByZWN1cnNvciB0byA8cmRhcjovL3By
b2JsZW0vNzY2MDY1Nz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ1NTIyCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6
OldlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6c2V0Wm9vbU11bHRpcGxpZXIpOgorICAgICAg
ICAqIFdlYlZpZXcuaDoKKyAgICAgICAgTW92ZSB0cmFja2luZyBvZiB0ZXh0IG9ubHkgem9vbSBo
ZXJlIGZyb20gV2ViQ29yZS4KKwogMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShy
ZXZpc2lvbiA2NzExNikKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyNiw2ICszMjYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKICAgICAsIG1fdXNlQmFja0Zv
cndhcmRMaXN0KHRydWUpCiAgICAgLCBtX3VzZXJBZ2VudE92ZXJyaWRkZW4oZmFsc2UpCiAgICAg
LCBtX3pvb21NdWx0aXBsaWVyKDEuMGYpCisgICAgLCBtX3pvb21zVGV4dE9ubHkoZmFsc2UpCiAg
ICAgLCBtX21vdXNlQWN0aXZhdGVkKGZhbHNlKQogICAgICwgbV9kcmFnRGF0YSgwKQogICAgICwg
bV9jdXJyZW50Q2hhcmFjdGVyQ29kZSgwKQpAQCAtMjkyNSwxMCArMjkyNiwxNSBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFBhCiB2b2lkIFdlYlZpZXc6OnNldFpvb21N
dWx0aXBsaWVyKGZsb2F0IG11bHRpcGxpZXIsIGJvb2wgaXNUZXh0T25seSkKIHsKICAgICBtX3pv
b21NdWx0aXBsaWVyID0gbXVsdGlwbGllcjsKLSAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFpv
b21Nb2RlKGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CisgICAgbV96b29t
c1RleHRPbmx5ID0gaXNUZXh0T25seTsKKwogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29y
ZShtX21haW5GcmFtZSkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFt
ZS0+dmlldygpKQotICAgICAgICAgICAgdmlldy0+c2V0Wm9vbUZhY3RvcihtdWx0aXBsaWVyLCBp
c1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOworICAgICAgICAgICAgaWYgKG1f
em9vbXNUZXh0T25seSkKKyAgICAgICAgICAgICAgICB2aWV3LT5zZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKDEsIG11bHRpcGxpZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHZpZXctPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobXVsdGlwbGllciwgMSk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKQEAgLTI5NDgsOCArMjk1NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6cGFnZVMKIAogZmxvYXQgV2ViVmlldzo6em9vbU11bHRpcGxpZXIoYm9v
bCBpc1RleHRPbmx5KQogewotICAgIFpvb21Nb2RlIHpvb21Nb2RlID0gaXNUZXh0T25seSA/IFpv
b21UZXh0T25seSA6IFpvb21QYWdlOwotICAgIGlmICh6b29tTW9kZSAhPSBtX3BhZ2UtPnNldHRp
bmdzKCktPnpvb21Nb2RlKCkpCisgICAgaWYgKGlzVGV4dE9ubHkgIT0gbV96b29tc1RleHRPbmx5
KQogICAgICAgICByZXR1cm4gMS4wZjsKICAgICByZXR1cm4gbV96b29tTXVsdGlwbGllcjsKIH0K
QEAgLTM3MzIsNyArMzczNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
Y2FuTWEKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLywKICAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgYm9vbCBjYW5Hcm93TW9y
ZSA9IGNhblpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVRleHRP
bmx5KTsKKyAgICBib29sIGNhbkdyb3dNb3JlID0gY2FuWm9vbUluKG1fem9vbXNUZXh0T25seSk7
CiAgICAgKnJlc3VsdCA9IGNhbkdyb3dNb3JlID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBT
X09LOwogfQpAQCAtMzc1NCw3ICszNzU5LDcgQEAgYm9vbCBXZWJWaWV3OjpjYW5ab29tSW4oYm9v
bCBpc1RleHRPbmx5KQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjptYWtlVGV4
dExhcmdlciggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0g
ICAgcmV0dXJuIHpvb21JbihtX3BhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gWm9vbVRl
eHRPbmx5KTsKKyAgICByZXR1cm4gem9vbUluKG1fem9vbXNUZXh0T25seSk7CiB9CiAKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6em9vbVBhZ2VJbiggCkBAIC0zNzc1LDcgKzM3
ODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNhbk1hCiAgICAgICAg
IC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCiAgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIGJvb2wgY2FuU2hyaW5rTW9yZSA9IGNhblpvb21P
dXQobV9wYWdlLT5zZXR0aW5ncygpLT56b29tTW9kZSgpID09IFpvb21UZXh0T25seSk7CisgICAg
Ym9vbCBjYW5TaHJpbmtNb3JlID0gY2FuWm9vbU91dChtX3pvb21zVGV4dE9ubHkpOwogICAgICpy
ZXN1bHQgPSBjYW5TaHJpbmtNb3JlID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwog
fQpAQCAtMzc5Nyw3ICszODAyLDcgQEAgYm9vbCBXZWJWaWV3OjpjYW5ab29tT3V0KGJvb2wgaXNU
ZXh0T25seQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjptYWtlVGV4dFNtYWxs
ZXIoIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIHJl
dHVybiB6b29tT3V0KG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBab29tVGV4dE9u
bHkpOworICAgIHJldHVybiB6b29tT3V0KG1fem9vbXNUZXh0T25seSk7CiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6em9vbVBhZ2VPdXQoIApAQCAtNDYzNCw3ICs0NjM5
LDkgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIGhyID0g
cHJlZmVyZW5jZXMtPnpvb21zVGV4dE9ubHkoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGluZ3MtPnNldFpvb21Nb2RlKGVuYWJsZWQg
PyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CisKKyAgICBpZiAobV96b29tc1RleHRPbmx5ICE9
IGVuYWJsZWQpCisgICAgICAgIHNldFpvb21NdWx0aXBsaWVyKG1fem9vbU11bHRpcGxpZXIsIGVu
YWJsZWQpOwogCiAgICAgc2V0dGluZ3MtPnNldFNob3dzVVJMc0luVG9vbFRpcHMoZmFsc2UpOwog
ICAgIHNldHRpbmdzLT5zZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKHRydWUpOwpJbmRleDog
V2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmgJ
KHJldmlzaW9uIDY3MTE2KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTk5NSw2ICs5OTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV1RGOjpTdHJpbmcgbV91c2VyQWdl
bnRDdXN0b207CiAgICAgV1RGOjpTdHJpbmcgbV91c2VyQWdlbnRTdGFuZGFyZDsKICAgICBmbG9h
dCBtX3pvb21NdWx0aXBsaWVyOworICAgIGJvb2wgbV96b29tc1RleHRPbmx5OwogICAgIFdURjo6
U3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9u
TmFtZTsKICAgICBib29sIG1fbW91c2VBY3RpdmF0ZWQ7CkluZGV4OiBXZWJLaXRUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NzE2
NSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDEwLTA5LTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5
IGNvbnN0cmFpbnQgaW4gV2ViQ29yZSBvZiBjaG9vc2luZyBlaXRoZXIgdGV4dCB6b29tIG9yIGZ1
bGwgcGFnZSB6b29tLgorICAgICAgICBQcmVjdXJzb3IgdG8gPHJkYXI6Ly9wcm9ibGVtLzc2NjA2
NTc+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTUy
MgorCisgICAgICAgIFVwZGF0ZSBmb3IgY2hhbmdlcyB0byB0aGUgQnVuZGxlIEFQSSB0byBhbGxv
dyBzZXBhcmF0ZSBjb250cm9sIG9mIHBhZ2UgYW5kIHRleHQgem9vbQorICAgICAgICBsZXZlbHMu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0
ZXh0Wm9vbUluKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dGV4dFpv
b21PdXQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp6b29tUGFnZUlu
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6em9vbVBhZ2VPdXQpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNldCk6CisKIDIw
MTAtMDktMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NzExOS4KSW5kZXg6IFdlYktpdFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNjcxMTYpCisrKyBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwzMCArOTIsMzggQEAgdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjpsZWFwRm9yd2FyZAogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OnRleHRab29tSW4oKQogewotICAgIFdLQnVuZGxlUGFnZVNldFpvb21Nb2RlKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwga1dLQnVuZGxlUGFnZVpvb21Nb2RlVGV4
dE9ubHkpOwotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBXS0J1bmRsZVBhZ2VHZXRab29tRmFjdG9y
KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgV0tCdW5kbGVQ
YWdlU2V0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCks
IHpvb21GYWN0b3IgKiBab29tTXVsdGlwbGllclJhdGlvKTsKKyAgICAvLyBFbnN1cmUgcGFnZSB6
b29tIGlzIHJlc2V0LgorICAgIFdLQnVuZGxlUGFnZVNldFBhZ2Vab29tRmFjdG9yKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgMSk7CisKKyAgICBmbG9hdCB6b29tRmFj
dG9yID0gV0tCdW5kbGVQYWdlR2V0VGV4dFpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRUZXh0Wm9vbUZhY3RvcihJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpvb21GYWN0b3IgKiBab29t
TXVsdGlwbGllclJhdGlvKTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0ZXh0
Wm9vbU91dCgpCiB7Ci0gICAgV0tCdW5kbGVQYWdlU2V0Wm9vbU1vZGUoSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBrV0tCdW5kbGVQYWdlWm9vbU1vZGVUZXh0T25seSk7
Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9IFdLQnVuZGxlUGFnZUdldFpvb21GYWN0b3IoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKLSAgICBXS0J1bmRsZVBhZ2VTZXRa
b29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgem9vbUZh
Y3RvciAvIFpvb21NdWx0aXBsaWVyUmF0aW8pOworICAgIC8vIEVuc3VyZSBwYWdlIHpvb20gaXMg
cmVzZXQuCisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZVpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCAxKTsKKworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBX
S0J1bmRsZVBhZ2VHZXRUZXh0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFn
ZSgpLT5wYWdlKCkpOworICAgIFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgem9vbUZhY3RvciAvIFpvb21NdWx0aXBs
aWVyUmF0aW8pOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Onpvb21QYWdlSW4o
KQogewotICAgIFdLQnVuZGxlUGFnZVNldFpvb21Nb2RlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5wYWdlKCktPnBhZ2UoKSwga1dLQnVuZGxlUGFnZVpvb21Nb2RlUGFnZSk7Ci0gICAgZmxvYXQg
em9vbUZhY3RvciA9IFdLQnVuZGxlUGFnZUdldFpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKLSAgICBXS0J1bmRsZVBhZ2VTZXRab29tRmFjdG9yKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgem9vbUZhY3RvciAqIFpvb21N
dWx0aXBsaWVyUmF0aW8pOworICAgIC8vIEVuc3VyZSB0ZXh0IHpvb20gaXMgcmVzZXQuCisgICAg
V0tCdW5kbGVQYWdlU2V0VGV4dFpvb21GYWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBh
Z2UoKS0+cGFnZSgpLCAxKTsKKworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBXS0J1bmRsZVBhZ2VH
ZXRQYWdlWm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkp
OworICAgIFdLQnVuZGxlUGFnZVNldFBhZ2Vab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5wYWdlKCktPnBhZ2UoKSwgem9vbUZhY3RvciAvIFpvb21NdWx0aXBsaWVyUmF0aW8pOwog
fQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Onpvb21QYWdlT3V0KCkKIHsKLSAgICBX
S0J1bmRsZVBhZ2VTZXRab29tTW9kZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5w
YWdlKCksIGtXS0J1bmRsZVBhZ2Vab29tTW9kZVBhZ2UpOwotICAgIGZsb2F0IHpvb21GYWN0b3Ig
PSBXS0J1bmRsZVBhZ2VHZXRab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
KCktPnBhZ2UoKSk7Ci0gICAgV0tCdW5kbGVQYWdlU2V0Wm9vbUZhY3RvcihJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpvb21GYWN0b3IgLyBab29tTXVsdGlwbGllclJh
dGlvKTsKKyAgICAvLyBFbnN1cmUgdGV4dCB6b29tIGlzIHJlc2V0LgorICAgIFdLQnVuZGxlUGFn
ZVNldFRleHRab29tRmFjdG9yKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KSwgMSk7CisKKyAgICBmbG9hdCB6b29tRmFjdG9yID0gV0tCdW5kbGVQYWdlR2V0UGFnZVpvb21G
YWN0b3IoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBXS0J1
bmRsZVBhZ2VTZXRQYWdlWm9vbUZhY3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgp
LT5wYWdlKCksIHpvb21GYWN0b3IgLyBab29tTXVsdGlwbGllclJhdGlvKTsKIH0KIAogLy8gT2Jq
ZWN0IENyZWF0aW9uCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShy
ZXZpc2lvbiA2NzExNikKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDggKzE1
OCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNldCgpCiB7CiAgICAgV0tCdW5kbGVQ
YWdlQ2xlYXJNYWluRnJhbWVOYW1lKG1fcGFnZSk7CiAKLSAgICBXS0J1bmRsZVBhZ2VTZXRab29t
RmFjdG9yKG1fcGFnZSwgMS4wZik7Ci0gICAgV0tCdW5kbGVQYWdlU2V0Wm9vbU1vZGUobV9wYWdl
LCBrV0tCdW5kbGVQYWdlWm9vbU1vZGVQYWdlKTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlWm9v
bUZhY3RvcihtX3BhZ2UsIDEpOworICAgIFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKG1f
cGFnZSwgMSk7CiB9CiAKIC8vIExvYWRlciBDbGllbnQgQ2FsbGJhY2tzCg==
</data>
<flag name="review"
          id="56538"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>