<?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>13487</bug_id>
          
          <creation_ts>2007-04-25 11:06:04 -0700</creation_ts>
          <short_desc>Implement O(1) absoluteClippedOverflowRect and absoluteOutlineBox during layout for a possible speed gain</short_desc>
          <delta_ts>2007-04-29 13:29:52 -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>Layout and Rendering</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>13351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ggaren</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>12517</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-04-25 11:06:04 -0700</bug_when>
    <thetext>When a block nested n levels deep needs relayout, O(n) implementations of absoluteClippedOverflowRect() and absoluteOutlineBox() are invoked by each of the ancestors, making for O(n^2) complexity.

By keeping track of absolute coordinates and clip on the stack during layout, it should be possible to implement absoluteClippedOverflowRect() and absoluteOutlineBox() in O(1) during layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12512</commentid>
    <comment_count>1</comment_count>
      <attachid>14178</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-25 11:23:26 -0700</bug_when>
    <thetext>Created attachment 14178
Cursory patch

Implements the suggested optimization with some caveats: (1) only the root layer is optimized (2) subtree layout is disabled (3) SVG is not patched (4) some other RenderObject subclasses are not patched yet (5) it is not thoroughly tested (it passes existing repaint tests) (6) some code duplication.

Before I address those I&apos;d like to know if it&apos;s worth it. Perhaps someone with access to the PLT and/or interesting test cases would like to help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12500</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-04-25 11:44:00 -0700</bug_when>
    <thetext>Dave, can you check this with the nesting PLT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12503</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-04-25 11:54:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Dave, can you check this with the nesting PLT?
&gt; 

Hyatt mentioned on IRC a page that was &quot;getting pwned by absolutePosition&quot; and that computeAbsoluteRepaintRect was the &quot;top offender for deeply nested inlines&quot; (after applying some of his optimizations).

I suppose it was in reference to non-cached pages, where image loading causes a ton of incremental relayout. In fact, for initial layout this patch may turn out to be bad, since it pushes state even if !checkForRepaint. Perhaps that can be avoided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12507</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-25 12:15:30 -0700</bug_when>
    <thetext>Your patch to RenderObject could be landed separately (the fixed position thing).

By the way, my lazy minmaxwidth patch does fix the common O(n^2) problem with absoluteClippedOverflowRect (normal document construction) by making sure it does no work if inlines have no line boxes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12323</commentid>
    <comment_count>5</comment_count>
      <attachid>14194</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-26 00:32:08 -0700</bug_when>
    <thetext>Created attachment 14194
A test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12324</commentid>
    <comment_count>6</comment_count>
      <attachid>14195</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-26 00:33:05 -0700</bug_when>
    <thetext>Created attachment 14195
Baseline test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12325</commentid>
    <comment_count>7</comment_count>
      <attachid>14196</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-26 00:33:48 -0700</bug_when>
    <thetext>Created attachment 14196
Test results after applying the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12326</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-04-26 00:35:31 -0700</bug_when>
    <thetext>I don&apos;t know that the test is meaningful nor that the improvement is significant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12327</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-04-26 00:50:56 -0700</bug_when>
    <thetext>In unscientific Shark profiles of the test, absolutePositon and computeAbsoluteRepaintRect come up at the top in TOT with 11.6% and 10.2%, respectively. With the patch they are down to 0.4% and 0.6%, resp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12353</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-26 10:43:37 -0700</bug_when>
    <thetext>Here are the top offenders on the nesting PLT:

15% WebCore::RenderObject::containingBlock() const
11% WebCore::RenderFlow::dirtyLinesFromChangedChild(WebCore::RenderObject*)
11% WebCore::RenderObject::repaint(bool)
9% WebCore::RenderBox::computeAbsoluteRepaintRect(WebCore::IntRect&amp;, bool)
4% WebCore::RenderBox::absolutePosition(int&amp;, int&amp;, bool) const

Excluding containingBlock turns into:

15% WebCore::RenderObject::invalidateContainingBlockPrefWidths()

Which breaks down into 10% appendChildNode and 5% removeChildNode.

It&apos;s clear from that profile that this change to make these O(1) will be a win.  I think I should probably fix invalidatePrefWidths to use container() so that intermediate inlines are not skipped, since not dirtying the inlines is introducing O(n^2) behavior into this method as inlines nest deeply.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12356</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-26 10:53:29 -0700</bug_when>
    <thetext>Filed

http://bugs.webkit.org/show_bug.cgi?id=13503

on the invalidateContainingBlockPrefWidths issue
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12379</commentid>
    <comment_count>12</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-26 12:55:26 -0700</bug_when>
    <thetext>OK, after the two fixes I landed today, computeAbsoluteRepaintRect and absolutePosition now dominate the nesting PLT (20% of the time).

repaintObjectsBeforeLayout is 2%.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12289</commentid>
    <comment_count>13</comment_count>
      <attachid>14215</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-26 16:13:54 -0700</bug_when>
    <thetext>Created attachment 14215
Patch r0.4

Moved LayoutState from the stack to the RenderArena and eliminated some duplicate code. (1)-(5) of comment #1 are mostly still not addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12290</commentid>
    <comment_count>14</comment_count>
      <attachid>14216</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-26 16:17:25 -0700</bug_when>
    <thetext>Created attachment 14216
Baseline test results for r21123

The baseline results are worse than before (attachment 14195). I suspect that&apos;s a result of removing the setLayout(false) from layoutBlockChildren in one of the recent revisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12291</commentid>
    <comment_count>15</comment_count>
      <attachid>14217</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-26 16:20:20 -0700</bug_when>
    <thetext>Created attachment 14217
Test results after applying patch r0.4 to r21123

Shark shows absolutePosition and computeAbsoluteRepaintRect down from 11.4% and 9.9% to 0.5% and 0.5%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11970</commentid>
    <comment_count>16</comment_count>
      <attachid>14236</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-27 12:55:43 -0700</bug_when>
    <thetext>Created attachment 14236
Keep track of absolute translation and clip during layout

No change log yet, but ready for review. No layout/pixel test regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11980</commentid>
    <comment_count>17</comment_count>
      <attachid>14236</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-27 14:22:57 -0700</bug_when>
    <thetext>Comment on attachment 14236
Keep track of absolute translation and clip during layout

I don&apos;t think you need to add  the boxLayer() method.  The cost of layer() is completely negligible if you get the O(n^2) stuff out of the way.

I know it looks like it mattered because I added that hasLayer() stuff recently, but it was really only showing up because it was being called a ludicrous number of times (and even then it was only like 1%).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11982</commentid>
    <comment_count>18</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-27 14:24:14 -0700</bug_when>
    <thetext>I know it breaks encapsulation, but IMO you can just use m_layer directly if you want.  That&apos;s what I do in other places.  This isn&apos;t a situation where that&apos;s going to change anyway. :)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12018</commentid>
    <comment_count>19</comment_count>
      <attachid>14243</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-28 10:44:21 -0700</bug_when>
    <thetext>Created attachment 14243
Keep track of absolute translation and clip during layout

Includes change log, new test results (eliminated some excessive repainting) and one new test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12029</commentid>
    <comment_count>20</comment_count>
      <attachid>14243</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-28 13:50:15 -0700</bug_when>
    <thetext>Comment on attachment 14243
Keep track of absolute translation and clip during layout

LayoutState should inherit from Noncopyable.

+    struct LayoutState* m_next;

LayoutState is a class not a struct, but also, just LayoutState* should work here.

+        // Our layuot state is not valid for the repaints we are going to trigger by

Typo, layuot.

+    bool layoutOnlyPositionedObjects();

The verb form is &quot;layOut&quot; and the noun form is &quot;layout&quot;. I know that the layout() function violates this, but layOutAxis() respects it. I&apos;m not sure others would agree with my take on this.

+    void offsetUnderRelPositionedInline(RenderObject*, int&amp; x, int&amp; y) const;

I&apos;m not completely comfortable with the verb use of offset here either. Ideally long-term something like this would return an IntSize that you would then add to your existing local IntPoint variable with +=.

+        // FIXME: Optimize using LayuotState and remove the disableLayoutState() call

Typo here, LayuoutState.

Given the paired nature of push/pop and disable/enable, perhaps we should use stack-based objects with destructors to ensure we don&apos;t forget to match them up. We could even make ones with features to cleanly deal with cases like the ones that currently have pushedLayoutState booleans.

+    void pushLayoutState(RenderBox* renderer, const IntSize&amp; offset) {
+        if (m_layoutStateDisableCount || m_frameView-&gt;needsFullRepaint())
+            return;
+        m_layoutState = new (renderArena()) LayoutState(m_layoutState, renderer, offset);
+    }

I think we should put braces on separate lines for multiline functions, even ones that are inlines in a header. The style guidelines should say something about this if they don&apos;t already.

I think Hyatt should review this too; I&apos;m not sure I understand the optimization well enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12032</commentid>
    <comment_count>21</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-04-28 14:36:14 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 14243 [edit])
&gt; Typo, layuot.

Oops :-)

&gt; +    bool layoutOnlyPositionedObjects();
&gt; 
&gt; The verb form is &quot;layOut&quot; and the noun form is &quot;layout&quot;. I know that the
&gt; layout() function violates this, but layOutAxis() respects it. I&apos;m not sure
&gt; others would agree with my take on this.

It&apos;s not just layout(), it&apos;s layoutBlock(), layoutPositionedObjects(), layout{Block,Inline}Children() and maybe a few others. I agree that layOut is better but I would prefer not to introduce apparent inconsistency with this patch, and perhaps rename all such functions in a separate rename-only patch.

&gt; +    void offsetUnderRelPositionedInline(RenderObject*, int&amp; x, int&amp; y) const;
&gt; 
&gt; I&apos;m not completely comfortable with the verb use of offset here either.

I&apos;m not comfortable with the entire name. I think &quot;under&quot; can be confusing.

&gt; Ideally
&gt; long-term something like this would return an IntSize that you would then add
&gt; to your existing local IntPoint variable with +=.

I might just change it to return IntSize. I&apos;m trying to use IntSize and IntPoint in new code. I started writing this function to return an IntSize but then I realized that the three existing callers had separate ints and decided not to bother with it.

&gt; Typo here, LayuoutState.

Oops again :-}

&gt; I think we should put braces on separate lines for multiline functions, even
&gt; ones that are inlines in a header.

I agree. This was unintentional.

(Comments that I didn&apos;t quote and reply to I&apos;m going to address, or at least try to address).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11763</commentid>
    <comment_count>22</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-28 21:03:33 -0700</bug_when>
    <thetext>While &quot;lay out&quot; is correct English for the verb form, I still don&apos;t think we should use &quot;layOut&quot; anywhere in our code base.  We should fix the frame function name to be &quot;layout&quot; instead.  

I think we basically have an established &quot;web engine&quot; colloquialism that treats layout as a single-word verb, and it would create an annoying inconsistency if we had methods like &quot;setNeedsLayout&quot; vs. &quot;layOut.&quot;  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11764</commentid>
    <comment_count>23</comment_count>
      <attachid>14243</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-28 21:11:11 -0700</bug_when>
    <thetext>Comment on attachment 14243
Keep track of absolute translation and clip during layout

Please fix the 

LayuotState

typos and then I can r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11799</commentid>
    <comment_count>24</comment_count>
      <attachid>14265</attachid>
    <who name="">mitz</who>
    <bug_when>2007-04-29 06:47:40 -0700</bug_when>
    <thetext>Created attachment 14265
Keep track of absolute translation and clip during layout

Changes from the previous patch:
* renamed offsetUnderRelPositionedInline to offsetForPositionedInContainer and changed it return an IntSize.
* Made LayoutState NonCopyable and removed the &quot;struct&quot; in the definition.
* Fixed embarrassing typos!
* Moved opening braces in multiline functions to a separate line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11800</commentid>
    <comment_count>25</comment_count>
      <attachid>14265</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-29 07:34:30 -0700</bug_when>
    <thetext>Comment on attachment 14265
Keep track of absolute translation and clip during layout

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11816</commentid>
    <comment_count>26</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-04-29 13:29:52 -0700</bug_when>
    <thetext>Landed in r21183.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14178</attachid>
            <date>2007-04-25 11:23:26 -0700</date>
            <delta_ts>2007-04-26 16:13:54 -0700</delta_ts>
            <desc>Cursory patch</desc>
            <filename>repaintRectOptimization_r0.2.patch</filename>
            <type>text/plain</type>
            <size>22732</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIxMDg2KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsMTMg
KzQ4OCwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5CiAKICAg
ICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4gJiYgcG9zQ2hpbGROZWVkc0xheW91dCgpICYmICFub3Jt
YWxDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIXNlbGZOZWVkc0xheW91dCgpKSB7CiAgICAgICAgIC8v
IEFsbCB3ZSBoYXZlIHRvIGlzIGxheSBvdXQgb3VyIHBvc2l0aW9uZWQgb2JqZWN0cy4KLSAgICAg
ICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMoZmFsc2UpOworICAgICAgICBsYXlvdXRQb3NpdGlv
bmVkT2JqZWN0cyhmYWxzZSwgdHJ1ZSk7CiAgICAgICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkK
ICAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogICAg
ICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBJbnRSZWN0IG9sZEJvdW5kczsKICAgICBJbnRSZWN0IG9sZE91dGxpbmVCb3g7CiAg
ICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsK
QEAgLTUwNSw2ICs1MDUsMjUgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCBy
ZWxheQogICAgICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5sYXlvdXREZWx0YSgpKTsK
ICAgICB9CiAKKyAgICBSZW5kZXJWaWV3OjpMYXlvdXRTdGF0ZSBsYXlvdXRTdGF0ZTsKKyAgICBs
YXlvdXRTdGF0ZSA9ICp2aWV3KCktPmxheW91dFN0YXRlKCk7CisgICAgYm9vbCBpc0NlbGwgPSBp
c1RhYmxlQ2VsbCgpOworICAgIGxheW91dFN0YXRlLm1fb2Zmc2V0ICs9IEludFNpemUobV94LCBt
X3kgKyAoaXNDZWxsID8gYm9yZGVyVG9wRXh0cmEoKSA6IDApKTsKKyAgICBpZiAoaGFzT3ZlcmZs
b3dDbGlwKCkpIHsKKyAgICAgICAgaW50IHggPSBsYXlvdXRTdGF0ZS5tX29mZnNldC53aWR0aCgp
OworICAgICAgICBpbnQgeSA9IGxheW91dFN0YXRlLm1fb2Zmc2V0LmhlaWdodCgpOworICAgICAg
ICBJbnRSZWN0IGJveFJlY3QoeCwgeSwgbV9sYXllci0+d2lkdGgoKSwgbV9sYXllci0+aGVpZ2h0
KCkpOworICAgICAgICBpZiAobGF5b3V0U3RhdGUubV9jbGlwcGVkKQorICAgICAgICAgICAgbGF5
b3V0U3RhdGUubV9jbGlwUmVjdC5pbnRlcnNlY3QoYm94UmVjdCk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgbGF5b3V0U3RhdGUubV9jbGlwUmVjdCA9IGJveFJlY3Q7CisgICAgICAgICAg
ICBsYXlvdXRTdGF0ZS5tX2NsaXBwZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1fbGF5
ZXItPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KHgsIHkpOworICAgICAgICBsYXlvdXRTdGF0ZS5tX29m
ZnNldCA9IEludFNpemUoeCwgeSk7CisgICAgfQorICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRl
KCZsYXlvdXRTdGF0ZSk7CisKICAgICBpbnQgb2xkV2lkdGggPSBtX3dpZHRoOwogICAgIGludCBv
bGRDb2x1bW5XaWR0aCA9IGRlc2lyZWRDb2x1bW5XaWR0aCgpOwogCkBAIC01MzQsNyArNTUzLDYg
QEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheQogICAgIC8vCiAgICAg
Ly8gU3RhcnQgb3V0IGJ5IHNldHRpbmcgb3VyIG1hcmdpbiB2YWx1ZXMgdG8gb3VyIGN1cnJlbnQg
bWFyZ2lucy4gIFRhYmxlIGNlbGxzIGhhdmUKICAgICAvLyBubyBtYXJnaW5zLCBzbyB3ZSBkb24n
dCBmaWxsIGluIHRoZSB2YWx1ZXMgZm9yIHRhYmxlIGNlbGxzLgotICAgIGJvb2wgaXNDZWxsID0g
aXNUYWJsZUNlbGwoKTsKICAgICBpZiAoIWlzQ2VsbCkgewogICAgICAgICBpbml0TWF4TWFyZ2lu
VmFsdWVzKCk7CiAKQEAgLTYwNiw2ICs2MjQsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRC
bG9jayhib29sIHJlbGF5CiAgICAgbV9vdmVyZmxvd1dpZHRoID0gbWF4KG1fb3ZlcmZsb3dXaWR0
aCwgbV93aWR0aCk7CiAgICAgbV9vdmVyZmxvd0hlaWdodCA9IG1heChtX292ZXJmbG93SGVpZ2h0
LCBtX2hlaWdodCk7CiAKKyAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CisKICAgICAvLyBV
cGRhdGUgb3VyIHNjcm9sbCBpbmZvcm1hdGlvbiBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9s
bC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgogICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4K
ICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCkBAIC02NDAsNiArNjYwLDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheQogICAgICAgICBpZiAoIXJlcGFpbnRSZWN0
LmlzRW1wdHkoKSAmJiB2ICYmIHYtPmZyYW1lVmlldygpKQogICAgICAgICAgICAgdi0+ZnJhbWVW
aWV3KCktPmFkZFJlcGFpbnRJbmZvKHRoaXMsIHJlcGFpbnRSZWN0KTsgLy8gV2UgbmVlZCB0byBk
byBhIHBhcnRpYWwgcmVwYWludCBvZiBvdXIgY29udGVudC4KICAgICB9CisKICAgICBzZXROZWVk
c0xheW91dChmYWxzZSk7CiB9CiAKQEAgLTEyMzcsMTEgKzEyNTgsMTcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbihibwogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsK
IH0KIAotdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdHMoYm9vbCByZWxh
eW91dENoaWxkcmVuKQordm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdHMo
Ym9vbCByZWxheW91dENoaWxkcmVuLCBib29sIHB1c2hPZmZzZXQpCiB7CiAgICAgaWYgKG1fcG9z
aXRpb25lZE9iamVjdHMpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByOwogICAgICAgICBEZXBy
ZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9iamVjdD4gaXQoKm1fcG9zaXRpb25lZE9iamVj
dHMpOworICAgICAgICBSZW5kZXJWaWV3OjpMYXlvdXRTdGF0ZSBsYXlvdXRTdGF0ZTsKKyAgICAg
ICAgbGF5b3V0U3RhdGUubV9vZmZzZXQgPSB2aWV3KCktPmxheW91dFN0YXRlKCktPm1fb2Zmc2V0
OworICAgICAgICBpZiAocHVzaE9mZnNldCkKKyAgICAgICAgbGF5b3V0U3RhdGUubV9vZmZzZXQg
Kz0gSW50U2l6ZShtX3gsIG1feSk7CisgICAgICAgIGxheW91dFN0YXRlLm1fY2xpcHBlZCA9IGZh
bHNlOworICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSgmbGF5b3V0U3RhdGUpOwogICAg
ICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApIHsKICAgICAgICAgICAgIC8v
IFdoZW4gYSBub24tcG9zaXRpb25lZCBibG9jayBlbGVtZW50IG1vdmVzLCBpdCBtYXkgaGF2ZSBw
b3NpdGlvbmVkIGNoaWxkcmVuIHRoYXQgYXJlIGltcGxpY2l0bHkgcG9zaXRpb25lZCByZWxhdGl2
ZSB0byB0aGUKICAgICAgICAgICAgIC8vIG5vbi1wb3NpdGlvbmVkIGJsb2NrLiAgUmF0aGVyIHRo
YW4gdHJ5aW5nIHRvIGRldGVjdCBhbGwgb2YgdGhlc2UgbW92ZW1lbnQgY2FzZXMsIHdlIGp1c3Qg
YWx3YXlzIGxheSBvdXQgcG9zaXRpb25lZApAQCAtMTI1MSw2ICsxMjc4LDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdAogICAgICAgICAgICAgICAgIHItPnNldENo
aWxkTmVlZHNMYXlvdXQodHJ1ZSwgZmFsc2UpOwogICAgICAgICAgICAgci0+bGF5b3V0SWZOZWVk
ZWQoKTsKICAgICAgICAgfQorICAgICAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CiAgICAg
fQogfQogCkBAIC0xMjc2LDYgKzEzMDQsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVwYWludE92
ZXJoYW5naW5nRmxvYQogICAgICAgICAKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHI7CiAgICAg
ICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zsb2F0
aW5nT2JqZWN0cyk7CisKKyAgICAgICAgLy8gRklYTUUJCURPIE5PVCBDT01NSVQJUmUtZW5hYmxl
IExheW91dFN0YXRlIG9wdGltaXphdGlvbiBpZiBwb3NzaWJsZQorICAgICAgICBSZW5kZXJWaWV3
OjpMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCktPmxheW91dFN0YXRlKCk7CisgICAg
ICAgIHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUoMCk7CiAgICAgICAgIGZvciAoIDsgKHIgPSBpdC5j
dXJyZW50KCkpOyArK2l0KSB7CiAgICAgICAgICAgICAvLyBPbmx5IHJlcGFpbnQgdGhlIG9iamVj
dCBpZiBpdCBpcyBvdmVyaGFuZ2luZywgaXMgbm90IGluIGl0cyBvd24gbGF5ZXIsIGFuZAogICAg
ICAgICAgICAgLy8gaXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRvIHBhaW50IChub1BhaW50IGlzbid0
IHNldCkuIFdoZW4gcGFpbnRBbGxEZXNjZW5kYW50cyBpcyB0cnVlLCB0aGUgbGF0dGVyCkBAIC0x
Mjg1LDYgKzEzMTcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZXBhaW50T3ZlcmhhbmdpbmdGbG9h
CiAgICAgICAgICAgICAgICAgci0+bm9kZS0+cmVwYWludE92ZXJoYW5naW5nRmxvYXRzKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgdmlldygpLT5zZXRMYXlvdXRTdGF0ZShs
YXlvdXRTdGF0ZSk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJl
dmlzaW9uIDIxMDg2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheW91dEJsb2Nr
Q2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKTsKICAgICB2b2lkIGxheW91dElubGluZUNo
aWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50JiByZXBhaW50VG9wLCBpbnQmIHJlcGFp
bnRCb3R0b20pOwogCi0gICAgdm9pZCBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29sIHJlbGF5
b3V0Q2hpbGRyZW4pOworICAgIHZvaWQgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMoYm9vbCByZWxh
eW91dENoaWxkcmVuLCBib29sIHB1c2hPZmZzZXQgPSBmYWxzZSk7CiAgICAgdm9pZCBpbnNlcnRQ
b3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgcmVtb3ZlUG9zaXRpb25l
ZE9iamVjdChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUG9zaXRpb25l
ZE9iamVjdHMoUmVuZGVyQmxvY2sqKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2
aXNpb24gMjEwODYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NjAsNiArNzYwLDEyIEBAIGludCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9j
a1dpZHRoKCkgY28KIAogYm9vbCBSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24oaW50JiB4UG9z
LCBpbnQmIHlQb3MsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CisgICAgaWYgKFJlbmRlclZpZXc6Okxh
eW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKSkgeworICAgICAg
ICB4UG9zID0gbGF5b3V0U3RhdGUtPm1fb2Zmc2V0LndpZHRoKCkgKyBtX3g7CisgICAgICAgIHlQ
b3MgPSBsYXlvdXRTdGF0ZS0+bV9vZmZzZXQuaGVpZ2h0KCkgKyBtX3k7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9z
aXRpb24pCiAgICAgICAgIGZpeGVkID0gdHJ1ZTsKIApAQCAtODk1LDYgKzkwMSwxNCBAQCBJbnRS
ZWN0IFJlbmRlckJveDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsCiAKIHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByZWN0LCBib29sIGZpeGVkKQogewor
ICAgIGlmIChSZW5kZXJWaWV3OjpMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCktPmxh
eW91dFN0YXRlKCkpIHsKKyAgICAgICAgcmVjdC5tb3ZlKG1feCwgbV95KTsKKyAgICAgICAgcmVj
dC5tb3ZlKGxheW91dFN0YXRlLT5tX29mZnNldCk7CisgICAgICAgIGlmIChsYXlvdXRTdGF0ZS0+
bV9jbGlwcGVkKQorICAgICAgICAgICAgcmVjdC5pbnRlcnNlY3QobGF5b3V0U3RhdGUtPm1fY2xp
cFJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaW50IHggPSByZWN0LngoKSAr
IG1feDsKICAgICBpbnQgeSA9IHJlY3QueSgpICsgbV95OwogCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIxMDg2KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDEyICs0NzcsMzIg
QEAgdm9pZCBSZW5kZXJDb250YWluZXI6OmxheW91dCgpCiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0
KCkpOwogICAgIEFTU0VSVCghcHJlZldpZHRoc0RpcnR5KCkpOwogCisgICAgUmVuZGVyVmlldzo6
TGF5b3V0U3RhdGUgbGF5b3V0U3RhdGU7CisgICAgbGF5b3V0U3RhdGUgPSAqdmlldygpLT5sYXlv
dXRTdGF0ZSgpOworICAgIGxheW91dFN0YXRlLm1fb2Zmc2V0ICs9IEludFNpemUobV94LCBtX3kp
OworICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAgICBpbnQgeCA9IGxheW91dFN0
YXRlLm1fb2Zmc2V0LndpZHRoKCk7CisgICAgICAgIGludCB5ID0gbGF5b3V0U3RhdGUubV9vZmZz
ZXQuaGVpZ2h0KCk7CisgICAgICAgIEludFJlY3QgYm94UmVjdCh4LCB5LCBtX2xheWVyLT53aWR0
aCgpLCBtX2xheWVyLT5oZWlnaHQoKSk7CisgICAgICAgIGlmIChsYXlvdXRTdGF0ZS5tX2NsaXBw
ZWQpCisgICAgICAgICAgICBsYXlvdXRTdGF0ZS5tX2NsaXBSZWN0LmludGVyc2VjdChib3hSZWN0
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsYXlvdXRTdGF0ZS5tX2NsaXBSZWN0ID0g
Ym94UmVjdDsKKyAgICAgICAgICAgIGxheW91dFN0YXRlLm1fY2xpcHBlZCA9IHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgbV9sYXllci0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeCwgeSk7CisgICAg
ICAgIGxheW91dFN0YXRlLm1fb2Zmc2V0ID0gSW50U2l6ZSh4LCB5KTsKKyAgICB9CisgICAgdmll
dygpLT5wdXNoTGF5b3V0U3RhdGUoJmxheW91dFN0YXRlKTsKKwogICAgIFJlbmRlck9iamVjdCog
Y2hpbGQgPSBtX2ZpcnN0Q2hpbGQ7CiAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgIGNoaWxk
LT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICBBU1NFUlQoY2hpbGQtPmlzUmVuZGVySW5saW5l
KCkgfHwgIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKTsKICAgICB9CisKKyAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CiAgICAg
c2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyMTA4NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3IEBAIHZv
aWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wKIAogICAgIGlmICghcmVsYXlv
dXRDaGlsZHJlbiAmJiBwb3NDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxkTmVlZHNM
YXlvdXQoKSAmJiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKICAgICAgICAgLy8gQWxsIHdlIGhhdmUg
dG8gaXMgbGF5IG91dCBvdXIgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlvdXRQb3Np
dGlvbmVkT2JqZWN0cyhmYWxzZSk7CisgICAgICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGZh
bHNlLCB0cnVlKTsKICAgICAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICAgICAg
bV9sYXllci0+dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CiAgICAgICAgIHNldE5lZWRz
TGF5b3V0KGZhbHNlKTsKQEAgLTI1OSw2ICsyNTksMjQgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJv
eDo6bGF5b3V0QmxvY2soYm9vbAogICAgICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5s
YXlvdXREZWx0YSgpKTsKICAgICB9CiAKKyAgICBSZW5kZXJWaWV3OjpMYXlvdXRTdGF0ZSBsYXlv
dXRTdGF0ZTsKKyAgICBsYXlvdXRTdGF0ZSA9ICp2aWV3KCktPmxheW91dFN0YXRlKCk7CisgICAg
bGF5b3V0U3RhdGUubV9vZmZzZXQgKz0gSW50U2l6ZShtX3gsIG1feSk7CisgICAgaWYgKGhhc092
ZXJmbG93Q2xpcCgpKSB7CisgICAgICAgIGludCB4ID0gbGF5b3V0U3RhdGUubV9vZmZzZXQud2lk
dGgoKTsKKyAgICAgICAgaW50IHkgPSBsYXlvdXRTdGF0ZS5tX29mZnNldC5oZWlnaHQoKTsKKyAg
ICAgICAgSW50UmVjdCBib3hSZWN0KHgsIHksIG1fbGF5ZXItPndpZHRoKCksIG1fbGF5ZXItPmhl
aWdodCgpKTsKKyAgICAgICAgaWYgKGxheW91dFN0YXRlLm1fY2xpcHBlZCkKKyAgICAgICAgICAg
IGxheW91dFN0YXRlLm1fY2xpcFJlY3QuaW50ZXJzZWN0KGJveFJlY3QpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGxheW91dFN0YXRlLm1fY2xpcFJlY3QgPSBib3hSZWN0OworICAgICAg
ICAgICAgbGF5b3V0U3RhdGUubV9jbGlwcGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBt
X2xheWVyLT5zdWJ0cmFjdFNjcm9sbE9mZnNldCh4LCB5KTsKKyAgICAgICAgbGF5b3V0U3RhdGUu
bV9vZmZzZXQgPSBJbnRTaXplKHgsIHkpOworICAgIH0KKyAgICB2aWV3KCktPnB1c2hMYXlvdXRT
dGF0ZSgmbGF5b3V0U3RhdGUpOworCiAgICAgaW50IHByZXZpb3VzV2lkdGggPSBtX3dpZHRoOwog
ICAgIGludCBwcmV2aW91c0hlaWdodCA9IG1faGVpZ2h0OwogICAgIApAQCAtMzI2LDYgKzM0NCw4
IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wKICAgICBpZiAobV9v
dmVyZmxvd1dpZHRoIDwgbV93aWR0aCkKICAgICAgICAgbV9vdmVyZmxvd1dpZHRoID0gbV93aWR0
aDsKIAorICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKwogICAgIC8vIFVwZGF0ZSBvdXIg
c2Nyb2xsYmFycyBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93IHRoYXQg
d2Uga25vdyBpZgogICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KICAgICBpZiAoaGFzT3ZlcmZs
b3dDbGlwKCkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMTA4
NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDkgKzIwNiwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9u
cyhiCiAgICAgICAgICAgICBBU1NFUlQodmlldyk7CiAgICAgICAgICAgICBpZiAodmlldyAmJiAh
dmlldy0+cHJpbnRpbmcoKSkgewogICAgICAgICAgICAgICAgIGJvb2wgZGlkTW92ZSA9IG5ld091
dGxpbmVCb3gubG9jYXRpb24oKSAhPSBtX291dGxpbmVCb3gubG9jYXRpb24oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIWRpZE1vdmUgJiYgIW1fcmVwYWludE92ZXJmbG93T25SZXNpemUpCisgICAg
ICAgICAgICAgICAgaWYgKCFkaWRNb3ZlICYmICFtX3JlcGFpbnRPdmVyZmxvd09uUmVzaXplKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FCQlETyBOT1QgQ09NTUlUCVRlbXBvcmFyeSBv
cHRpbWl6YXRpb24ga2lsbGVyCisgICAgICAgICAgICAgICAgICAgIFJlbmRlclZpZXc6OkxheW91
dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXctPmxheW91dFN0YXRlKCk7CisgICAgICAgICAgICAg
ICAgICAgIHZpZXctPnNldExheW91dFN0YXRlKDApOwogICAgICAgICAgICAgICAgICAgICBtX29i
amVjdC0+cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQobV9yZXBhaW50UmVjdCwgbV9vdXRsaW5l
Qm94KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkaWRNb3ZlIHx8IG5ld1JlY3QgIT0gbV9y
ZXBhaW50UmVjdCkgeworICAgICAgICAgICAgICAgICAgICB2aWV3LT5zZXRMYXlvdXRTdGF0ZShs
YXlvdXRTdGF0ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkaWRNb3ZlIHx8IG5ld1Jl
Y3QgIT0gbV9yZXBhaW50UmVjdCkgewogICAgICAgICAgICAgICAgICAgICB2aWV3LT5yZXBhaW50
Vmlld1JlY3RhbmdsZShtX3JlcGFpbnRSZWN0KTsKICAgICAgICAgICAgICAgICAgICAgdmlldy0+
cmVwYWludFZpZXdSZWN0YW5nbGUobmV3UmVjdCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMTA4NikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5OSw4ICs2OTks
OSBAQCB2b2lkIFJlbmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdCbG9ja3NGCiAgICAgICAgIH0K
IAogICAgICAgICBsYXN0ID0gbzsKLSAgICAgICAgaWYgKHNjaGVkdWxlUmVsYXlvdXQgJiYgKGxh
c3QtPmlzVGV4dEZpZWxkKCkgfHwgbGFzdC0+aXNUZXh0QXJlYSgpKSkKLSAgICAgICAgICAgIGJy
ZWFrOworLy8gRklYTUUJCURPIE5PVCBDT01NSVQJCURpc2FibGVkIHN1YnRyZWUgbGF5b3V0Cisv
LyAgICAgICAgaWYgKHNjaGVkdWxlUmVsYXlvdXQgJiYgKGxhc3QtPmlzVGV4dEZpZWxkKCkgfHwg
bGFzdC0+aXNUZXh0QXJlYSgpKSkKKy8vICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG8gPSBv
LT5jb250YWluZXIoKTsKICAgICB9CiAKQEAgLTI0MTcsOCArMjQxOCwxMiBAQCBSZW5kZXJPYmpl
Y3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKCkgCiAgICAgLy8gdGhlIGxheW91dCBvZiB0aGUg
cG9zaXRpb25lZCBvYmplY3QuICBUaGlzIGRvZXMgbWVhbiB0aGF0IGNhbGNBYnNvbHV0ZUhvcml6
b250YWwgYW5kCiAgICAgLy8gY2FsY0Fic29sdXRlVmVydGljYWwgaGF2ZSB0byB1c2UgY29udGFp
bmVyKCkuCiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcGFyZW50KCk7CisKKyAgICBpZiAoaXNUZXh0
KCkpCisgICAgICAgIHJldHVybiBvOworCiAgICAgRVBvc2l0aW9uIHBvcyA9IG1fc3R5bGUtPnBv
c2l0aW9uKCk7Ci0gICAgaWYgKCFpc1RleHQoKSAmJiBwb3MgPT0gRml4ZWRQb3NpdGlvbikgewor
ICAgIGlmIChwb3MgPT0gRml4ZWRQb3NpdGlvbikgewogICAgICAgICAvLyBjb250YWluZXIoKSBj
YW4gYmUgY2FsbGVkIG9uIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBpbiB0aGUKICAgICAgICAgLy8g
dHJlZSB5ZXQuICBXZSBkb24ndCBjYWxsIHZpZXcoKSBzaW5jZSBpdCB3aWxsIGFzc2VydCBpZiBp
dAogICAgICAgICAvLyBjYW4ndCBnZXQgYmFjayB0byB0aGUgY2FudmFzLiAgSW5zdGVhZCB3ZSBq
dXN0IHdhbGsgYXMgaGlnaCB1cApAQCAtMjQyNyw3ICsyNDMyLDcgQEAgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJPYmplY3Q6OmNvbnRhaW5lcigpIAogICAgICAgICAvLyB3ZSdsbCBqdXN0IHJldHVybiAw
KS4KICAgICAgICAgd2hpbGUgKG8gJiYgby0+cGFyZW50KCkpCiAgICAgICAgICAgICBvID0gby0+
cGFyZW50KCk7Ci0gICAgfSBlbHNlIGlmICghaXNUZXh0KCkgJiYgcG9zID09IEFic29sdXRlUG9z
aXRpb24pIHsKKyAgICB9IGVsc2UgaWYgKHBvcyA9PSBBYnNvbHV0ZVBvc2l0aW9uKSB7CiAgICAg
ICAgIC8vIFNhbWUgZ29lcyBoZXJlLiAgV2UgdGVjaG5pY2FsbHkganVzdCB3YW50IG91ciBjb250
YWluaW5nIGJsb2NrLCBidXQKICAgICAgICAgLy8gd2UgbWF5IG5vdCBoYXZlIG9uZSBpZiB3ZSdy
ZSBwYXJ0IG9mIGFuIHVuaW5zdGFsbGVkIHN1YnRyZWUuICBXZSdsbAogICAgICAgICAvLyBjbGlt
YiBhcyBoaWdoIGFzIHdlIGNhbiB0aG91Z2guCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCShyZXZpc2lvbiAyMTA4NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZpeGVkVGFibGVM
YXlvdXQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9u
LmgiCkBAIC0yNjksNyArMjcwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKIAogICAg
IGlmIChwb3NDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxkTmVlZHNMYXlvdXQoKSAm
JiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKICAgICAgICAgLy8gQWxsIHdlIGhhdmUgdG8gZG8gaXMg
bGF5IG91dCBvdXIgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlvdXRQb3NpdGlvbmVk
T2JqZWN0cyhmYWxzZSk7CisgICAgICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGZhbHNlLCB0
cnVlKTsKICAgICAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjg0LDYgKzI4NSwyNCBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAg
ICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5sYXlvdXREZWx0YSgpKTsKICAgICB9CiAg
ICAgCisgICAgUmVuZGVyVmlldzo6TGF5b3V0U3RhdGUgbGF5b3V0U3RhdGU7CisgICAgbGF5b3V0
U3RhdGUgPSAqdmlldygpLT5sYXlvdXRTdGF0ZSgpOworICAgIGxheW91dFN0YXRlLm1fb2Zmc2V0
ICs9IEludFNpemUobV94LCBtX3kpOworICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkgeworICAg
ICAgICBpbnQgeCA9IGxheW91dFN0YXRlLm1fb2Zmc2V0LndpZHRoKCk7CisgICAgICAgIGludCB5
ID0gbGF5b3V0U3RhdGUubV9vZmZzZXQuaGVpZ2h0KCk7CisgICAgICAgIEludFJlY3QgYm94UmVj
dCh4LCB5LCBtX2xheWVyLT53aWR0aCgpLCBtX2xheWVyLT5oZWlnaHQoKSk7CisgICAgICAgIGlm
IChsYXlvdXRTdGF0ZS5tX2NsaXBwZWQpCisgICAgICAgICAgICBsYXlvdXRTdGF0ZS5tX2NsaXBS
ZWN0LmludGVyc2VjdChib3hSZWN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsYXlv
dXRTdGF0ZS5tX2NsaXBSZWN0ID0gYm94UmVjdDsKKyAgICAgICAgICAgIGxheW91dFN0YXRlLm1f
Y2xpcHBlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgbV9sYXllci0+c3VidHJhY3RTY3Jv
bGxPZmZzZXQoeCwgeSk7CisgICAgICAgIGxheW91dFN0YXRlLm1fb2Zmc2V0ID0gSW50U2l6ZSh4
LCB5KTsKKyAgICB9CisgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUoJmxheW91dFN0YXRlKTsK
KwogICAgIG1faGVpZ2h0ID0gMDsKICAgICBtX292ZXJmbG93SGVpZ2h0ID0gMDsKICAgICBtX292
ZXJmbG93VG9wID0gMDsKQEAgLTQyNCw2ICs0NDMsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlv
dXQoKQogICAgIC8vIEZJWE1FOiBPbmx5IHBhc3MgdHJ1ZSBpZiB3aWR0aCBvciBoZWlnaHQgY2hh
bmdlZC4KICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyh0cnVlKTsKIAorICAgIHZpZXcoKS0+
cG9wTGF5b3V0U3RhdGUoKTsKKwogICAgIGJvb2wgZGlkRnVsbFJlcGFpbnQgPSB0cnVlOwogICAg
IC8vIFJlcGFpbnQgd2l0aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJv
bSBvdXIgb2xkIGJvdW5kcy4KICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAyMTA4NikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxl
bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCisjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAg
LTE4NCwxNSArMTg1LDE4IEBAIEludFJlY3QgUmVuZGVyVGFibGVDZWxsOjphYnNvbHV0ZUNsaXBw
ZWQKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRS
ZWN0JiByLCBib29sIGZpeGVkKQogewogICAgIHIuc2V0WShyLnkoKSArIG1fdG9wRXh0cmEpOwot
ICAgIHIubW92ZSgtcGFyZW50KCktPnhQb3MoKSwgLXBhcmVudCgpLT55UG9zKCkpOyAvLyBSb3dz
IGFyZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHNwYWNlLCBzbyBkb24ndCBhZGQgdGhlaXIgb2Zm
c2V0IGluLgorICAgIGlmICghdmlldygpLT5sYXlvdXRTdGF0ZSgpKQorICAgICAgICByLm1vdmUo
LXBhcmVudCgpLT54UG9zKCksIC1wYXJlbnQoKS0+eVBvcygpKTsgLy8gUm93cyBhcmUgaW4gdGhl
IHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwgc28gZG9uJ3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KICAg
ICBSZW5kZXJCbG9jazo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QociwgZml4ZWQpOwogfQog
CiBib29sIFJlbmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVQb3NpdGlvbihpbnQmIHhQb3MsIGludCYg
eVBvcywgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IFJlbmRlckJsb2Nr
OjphYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGZpeGVkKTsKLSAgICB4UG9zIC09IHBhcmVu
dCgpLT54UG9zKCk7IC8vIFJvd3MgYXJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UsIHNv
IGRvbid0IGFkZCB0aGVpciBvZmZzZXQgaW4uCi0gICAgeVBvcyAtPSBwYXJlbnQoKS0+eVBvcygp
OworICAgIGlmICghdmlldygpLT5sYXlvdXRTdGF0ZSgpKSB7CisgICAgICAgIHhQb3MgLT0gcGFy
ZW50KCktPnhQb3MoKTsgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwg
c28gZG9uJ3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KKyAgICAgICAgeVBvcyAtPSBwYXJlbnQoKS0+
eVBvcygpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiAyMTA4NikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOSBAQAog
I2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
clRhYmxlQ2VsbC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMTQsNiArMTE2LDI0IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OmxheW91dCgp
CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogICAgIEFTU0VSVCghcHJlZldpZHRoc0RpcnR5
KCkpOwogCisgICAgUmVuZGVyVmlldzo6TGF5b3V0U3RhdGUgbGF5b3V0U3RhdGU7CisgICAgbGF5
b3V0U3RhdGUgPSAqdmlldygpLT5sYXlvdXRTdGF0ZSgpOworICAgIC8vIE5vdGUgdGhhdCB0YWJs
ZSByb3dzIGRvIG5vdCBhZGQgdHJhbnNsYXRpb24uCisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgp
KSB7CisgICAgICAgIGludCB4ID0gbGF5b3V0U3RhdGUubV9vZmZzZXQud2lkdGgoKTsKKyAgICAg
ICAgaW50IHkgPSBsYXlvdXRTdGF0ZS5tX29mZnNldC5oZWlnaHQoKTsKKyAgICAgICAgSW50UmVj
dCBib3hSZWN0KHgsIHksIG1fbGF5ZXItPndpZHRoKCksIG1fbGF5ZXItPmhlaWdodCgpKTsKKyAg
ICAgICAgaWYgKGxheW91dFN0YXRlLm1fY2xpcHBlZCkKKyAgICAgICAgICAgIGxheW91dFN0YXRl
Lm1fY2xpcFJlY3QuaW50ZXJzZWN0KGJveFJlY3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGxheW91dFN0YXRlLm1fY2xpcFJlY3QgPSBib3hSZWN0OworICAgICAgICAgICAgbGF5b3V0
U3RhdGUubV9jbGlwcGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBtX2xheWVyLT5zdWJ0
cmFjdFNjcm9sbE9mZnNldCh4LCB5KTsKKyAgICAgICAgbGF5b3V0U3RhdGUubV9vZmZzZXQgPSBJ
bnRTaXplKHgsIHkpOworICAgIH0KKyAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSgmbGF5b3V0
U3RhdGUpOworCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQt
PmlzVGFibGVDZWxsKCkpIHsKICAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IHN0
YXRpY19jYXN0PFJlbmRlclRhYmxlQ2VsbCo+KGNoaWxkKTsKQEAgLTEyMyw2ICsxNDMsOCBAQCB2
b2lkIFJlbmRlclRhYmxlUm93OjpsYXlvdXQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQorCisgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOwogICAgIHNldE5lZWRzTGF5b3V0
KGZhbHNlKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCShyZXZpc2lvbiAyMTA4NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNvbC5oIgogI2luY2x1ZGUgIlJl
bmRlclRhYmxlUm93LmgiCisvLyBGSVhNRQlETyBOT1QgQ09NTUlUCU5lZWRlZCBmb3IgdGVtcG9y
YXJ5IHN0dWZmIGJlbG93CisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
Mjg0LDggKzI4NiwxMyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c2V0Q2VsbFdpZHRocygp
CiAgICAgICAgICAgICBpZiAodyAhPSBvbGRXaWR0aCkgewogICAgICAgICAgICAgICAgIGJvb2wg
bmVlZGVkTGF5b3V0ID0gY2VsbC0+c2VsZk5lZWRzTGF5b3V0KCk7CiAgICAgICAgICAgICAgICAg
Y2VsbC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuZWVkZWRM
YXlvdXQgJiYgIXNlbGZOZWVkc0xheW91dCgpICYmIGNlbGwtPmNoZWNrRm9yUmVwYWludER1cmlu
Z0xheW91dCgpKQorICAgICAgICAgICAgICAgIGlmICghbmVlZGVkTGF5b3V0ICYmICFzZWxmTmVl
ZHNMYXlvdXQoKSAmJiBjZWxsLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRQkJRE8gTk9UIENPTU1JVAlLaWxsIHRoZSBvcHRpbWl6
YXRpb24gZm9yIG5vdworICAgICAgICAgICAgICAgICAgICBSZW5kZXJWaWV3OjpMYXlvdXRTdGF0
ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCktPmxheW91dFN0YXRlKCk7CisgICAgICAgICAgICAgICAg
ICAgIHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUoMCk7CiAgICAgICAgICAgICAgICAgICAgIGNlbGwt
PnJlcGFpbnRPYmplY3RzQmVmb3JlTGF5b3V0KCk7CisgICAgICAgICAgICAgICAgICAgIHZpZXco
KS0+c2V0TGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBjZWxsLT5zZXRXaWR0aCh3KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNTI4LDggKzUzNSwxMyBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKGlu
dCB0CiAgICAgICAgICAgICBpbnQgYmUgPSBySGVpZ2h0IC0gY2VsbC0+aGVpZ2h0KCkgLSB0ZTsK
ICAgICAgICAgICAgIGNlbGwtPnNldENlbGxUb3BFeHRyYSh0ZSk7CiAgICAgICAgICAgICBjZWxs
LT5zZXRDZWxsQm90dG9tRXh0cmEoYmUpOwotICAgICAgICAgICAgaWYgKCh0ZSAhPSBvbGRUZSB8
fCBiZSA+IG9sZEJlKSAmJiAhdGFibGUoKS0+c2VsZk5lZWRzTGF5b3V0KCkgJiYgY2VsbC0+Y2hl
Y2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkpCisgICAgICAgICAgICBpZiAoKHRlICE9IG9sZFRl
IHx8IGJlID4gb2xkQmUpICYmICF0YWJsZSgpLT5zZWxmTmVlZHNMYXlvdXQoKSAmJiBjZWxsLT5j
aGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1F
CQlETyBOT1QgQ09NTUlUIERpc2FibGluZyBvcHRpbWl6YXRpb24gaGVyZQorICAgICAgICAgICAg
ICAgIFJlbmRlclZpZXc6OkxheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0
U3RhdGUoKTsKKyAgICAgICAgICAgICAgICB2aWV3KCktPnNldExheW91dFN0YXRlKDApOwogICAg
ICAgICAgICAgICAgIGNlbGwtPnJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICB2aWV3KCktPnNl
dExheW91dFN0YXRlKGxheW91dFN0YXRlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgSW50UmVjdCBvbGRDZWxsUmVjdChjZWxsLT54UG9zKCksIGNlbGwtPnlQb3Mo
KSAtIGNlbGwtPmJvcmRlclRvcEV4dHJhKCkgLCBjZWxsLT53aWR0aCgpLCBjZWxsLT5oZWlnaHQo
KSk7CiAgICAgICAgIApAQCAtNTQ3LDggKzU1OSwxMyBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9u
OjpsYXlvdXRSb3dzKGludCB0CiAgICAgICAgICAgICAvLyBJZiB0aGUgY2VsbCBtb3ZlZCwgd2Ug
aGF2ZSB0byByZXBhaW50IGl0IGFzIHdlbGwgYXMgYW55IGZsb2F0aW5nL3Bvc2l0aW9uZWQKICAg
ICAgICAgICAgIC8vIGRlc2NlbmRhbnRzLiAgQW4gZXhjZXB0aW9uIGlzIGlmIHdlIG5lZWQgYSBs
YXlvdXQuICBJbiB0aGlzIGNhc2UsIHdlIGtub3cgd2UncmUgZ29pbmcgdG8KICAgICAgICAgICAg
IC8vIHJlcGFpbnQgb3Vyc2VsdmVzIChhbmQgdGhlIGNlbGwpIGFueXdheS4KLSAgICAgICAgICAg
IGlmICghdGFibGUoKS0+c2VsZk5lZWRzTGF5b3V0KCkgJiYgY2VsbC0+Y2hlY2tGb3JSZXBhaW50
RHVyaW5nTGF5b3V0KCkpCisgICAgICAgICAgICBpZiAoIXRhYmxlKCktPnNlbGZOZWVkc0xheW91
dCgpICYmIGNlbGwtPmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUUJCURPIE5PVCBDT01NSVQJS2lsbCB0aGUgb3B0aW1pemF0aW9uIGZvciBu
b3cuIENhbiBiZSByZXZpdmVkIGFmdGVyIHZlcmlmaWNhdGlvbiBvbmNlIFJlbmRlclRhYmxlQ2Vs
bDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QgaXMgZml4ZWQuIEp1c3QgbmVlZCB0byBwdXNo
IGEgc3RhdGUgZm9yIG91cnNlbHZlcyBoZXJlLgorICAgICAgICAgICAgICAgIFJlbmRlclZpZXc6
OkxheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKTsKKyAgICAg
ICAgICAgICAgICB2aWV3KCktPnNldExheW91dFN0YXRlKDApOwogICAgICAgICAgICAgICAgIGNl
bGwtPnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKG9sZENlbGxSZWN0KTsKKyAgICAgICAgICAg
ICAgICB2aWV3KCktPnNldExheW91dFN0YXRlKGxheW91dFN0YXRlKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlz
aW9uIDIxMDg2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAgUmVuZGVyVmlldzo6UmVuZGVyVmlldyhOb2RlKiBub2Rl
LCBGcmFtZQogICAgICwgbV9zZWxlY3Rpb25FbmRQb3MoLTEpCiAgICAgLCBtX3ByaW50SW1hZ2Vz
KHRydWUpCiAgICAgLCBtX21heGltYWxPdXRsaW5lU2l6ZSgwKQorICAgICwgbV9sYXlvdXRTdGF0
ZSgwKQogewogICAgIC8vIENsZWFyIG91ciBhbm9ueW1vdXMgYml0LCBzZXQgYmVjYXVzZSBSZW5k
ZXJPYmplY3QgYXNzdW1lcwogICAgIC8vIGFueSByZW5kZXJlciB3aXRoIGRvY3VtZW50IGFzIHRo
ZSBub2RlIGlzIGFub255bW91cy4KQEAgLTEwMyw2ICsxMDQsMTEgQEAgdm9pZCBSZW5kZXJWaWV3
OjpsYXlvdXQoKQogICAgIGlmIChyZWNhbGNNaW5NYXgoKSkKICAgICAgICAgcmVjYWxjTWluTWF4
V2lkdGhzKCk7CiAgICAgCisgICAgQVNTRVJUKCFtX2xheW91dFN0YXRlKTsKKyAgICBMYXlvdXRT
dGF0ZSBzdGF0ZTsKKyAgICBzdGF0ZS5tX2NsaXBwZWQgPSBmYWxzZTsKKyAgICBwdXNoTGF5b3V0
U3RhdGUoJnN0YXRlKTsKKwogICAgIGlmIChuZWVkc0xheW91dCgpKQogICAgICAgICBSZW5kZXJC
bG9jazo6bGF5b3V0KCk7CiAKQEAgLTExMyw2ICsxMTksNyBAQCB2b2lkIFJlbmRlclZpZXc6Omxh
eW91dCgpCiAgICAgc2V0T3ZlcmZsb3dXaWR0aChkb2NXaWR0aCgpKTsKICAgICBzZXRPdmVyZmxv
d0hlaWdodChkb2NIZWlnaHQoKSk7CiAKKyAgICBwb3BMYXlvdXRTdGF0ZSgpOwogICAgIHNldE5l
ZWRzTGF5b3V0KGZhbHNlKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2aXNp
b24gMjEwODYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDYgKzkzLDIzIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBsYXlvdXRE
ZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGVsdGE7IH0KICAgICB2b2lkIGFkZExheW91
dERlbHRhKGNvbnN0IEludFNpemUmIGRlbHRhKSB7IG1fbGF5b3V0RGVsdGEgKz0gZGVsdGE7IH0K
IAorICAgIHN0cnVjdCBMYXlvdXRTdGF0ZSB7CisgICAgICAgIExheW91dFN0YXRlKCkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBtX2NsaXBwZWQ7CisgICAgICAgIEludFJl
Y3QgbV9jbGlwUmVjdDsKKyAgICAgICAgSW50U2l6ZSBtX29mZnNldDsKKyAgICAgICAgc3RydWN0
IExheW91dFN0YXRlKiBtX25leHQ7CisgICAgfTsKKworICAgIHZvaWQgcHVzaExheW91dFN0YXRl
KExheW91dFN0YXRlKiBzdGF0ZSkgeyBzdGF0ZS0+bV9uZXh0ID0gbV9sYXlvdXRTdGF0ZTsgbV9s
YXlvdXRTdGF0ZSA9IHN0YXRlOyB9CisgICAgdm9pZCBwb3BMYXlvdXRTdGF0ZSgpIHsgbV9sYXlv
dXRTdGF0ZSA9IG1fbGF5b3V0U3RhdGUtPm1fbmV4dDsgfQorICAgIExheW91dFN0YXRlKiBsYXlv
dXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0U3RhdGU7IH0KKyAgICAvLyBGSVhNRQlE
TyBOT1QgQ09NTUlUCVRlbXBvcmFyeSBmb3IgdmFsaWRhdGlvbgorICAgIHZvaWQgc2V0TGF5b3V0
U3RhdGUoTGF5b3V0U3RhdGUqIHN0YXRlKSB7IG1fbGF5b3V0U3RhdGUgPSBzdGF0ZTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgRnJhbWVWaWV3KiBtX2ZyYW1lVmlldzsKIApAQCAtMTE3LDYgKzEzNCw3
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fdHJ1bmNhdG9yV2lkdGg7CiAgICAgYm9vbCBtX2ZvcmNl
ZFBhZ2VCcmVhazsKICAgICBJbnRTaXplIG1fbGF5b3V0RGVsdGE7CisgICAgTGF5b3V0U3RhdGUq
IG1fbGF5b3V0U3RhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>14194</attachid>
            <date>2007-04-26 00:32:08 -0700</date>
            <delta_ts>2007-04-26 00:32:08 -0700</delta_ts>
            <desc>A test</desc>
            <filename>nested-absoluteClippedOverflowRect.html</filename>
            <type>text/html</type>
            <size>1599</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGhlYWQ+CiAgICA8c3R5bGU+CiAgICAgICAgZGl2LmlubmVyIHsgaGVpZ2h0OiAxMHB4OyB9CiAg
ICA8L3N0eWxlPgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgY29udGFpbmVyOwogICAgICAgIHZh
ciBib2R5OwogICAgCiAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgICAgewogICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiAgICAgICAgfQogICAgCiAg
ICAgICAgZnVuY3Rpb24gbmVzdCgpCiAgICAgICAgewogICAgICAgICAgICB2YXIgcGFyZW50ID0g
Y29udGFpbmVyLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHZhciBuZXdQYXJlbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgbmV3UGFyZW50LmFwcGVuZENoaWxk
KGNvbnRhaW5lcik7CiAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChuZXdQYXJlbnQpOwog
ICAgICAgIH0KICAgIAogICAgICAgIGZ1bmN0aW9uIHNldHVwKCkKICAgICAgICB7CiAgICAgICAg
ICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKICAg
ICAgICAgICAgYm9keSA9IGRvY3VtZW50LmJvZHk7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwOyArK2kpIHsKICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgIGRpdi5jbGFzc05hbWUgPSAiaW5uZXIi
OwogICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRpdik7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAgICAgfQoKICAgICAg
ICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICB7CiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgMjA7ICsraikgewogICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKTsKICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTAwOyArK2kpIHsKICAgICAgICAgICAg
ICAgICAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSAiMTAwcHgiOwogICAgICAgICAgICAgICAg
ICAgIGJvZHkub2Zmc2V0VG9wOwogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS53
aWR0aCA9ICIyMDBweCI7CiAgICAgICAgICAgICAgICAgICAgYm9keS5vZmZzZXRUb3A7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKTsKICAgICAg
ICAgICAgICAgIGxvZyhqICsgIlx0IiArIChlbmQudmFsdWVPZigpIC0gc3RhcnQudmFsdWVPZigp
KSk7CiAgICAgICAgICAgICAgICBuZXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICA8
L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InNldHVwKCk7IHRlc3QoKTsiPgogICAgPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+CiAgICA8ZGl2PgogICAgICAgIDxkaXYgaWQ9ImNvbnRhaW5l
ciIgc3R5bGU9IndpZHRoOiAyMDBweDsiPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvYm9k
eT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>14195</attachid>
            <date>2007-04-26 00:33:05 -0700</date>
            <delta_ts>2007-04-26 00:33:05 -0700</delta_ts>
            <desc>Baseline test results</desc>
            <filename>results-baseline.txt</filename>
            <type>text/plain</type>
            <size>136</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">MAk3MDEKMQk3MjgKMgk3NDcKMwk3NjgKNAk3ODIKNQk4MTEKNgk4MjkKNwk4NTIKOAk4NzcKOQk5
MDgKMTAJOTI3CjExCTk1MwoxMgk5NzIKMTMJOTk2CjE0CTEwMTUKMTUJMTA0NQoxNgkxMDY2CjE3
CTEwOTAKMTgJMTExNgoxOQkxMTQzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>14196</attachid>
            <date>2007-04-26 00:33:48 -0700</date>
            <delta_ts>2007-04-26 00:33:48 -0700</delta_ts>
            <desc>Test results after applying the patch</desc>
            <filename>results-optimized.txt</filename>
            <type>text/plain</type>
            <size>130</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">MAk2NzAKMQk2NzEKMgk2NjQKMwk2NjcKNAk2NjYKNQk2NzQKNgk2NzAKNwk2NzIKOAk2NjkKOQk2
NzQKMTAJNjY0CjExCTY3MQoxMgk2NzEKMTMJNjczCjE0CTY3NQoxNQk2NzMKMTYJNjcxCjE3CTY3
MwoxOAk2NzEKMTkJNjczCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14215</attachid>
            <date>2007-04-26 16:13:54 -0700</date>
            <delta_ts>2007-04-28 14:41:03 -0700</delta_ts>
            <desc>Patch r0.4</desc>
            <filename>repaintRectOptimization_r0.4.patch</filename>
            <type>text/plain</type>
            <size>30158</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMTEyMykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzEsNiArMjcxLDggQEAKIAkJMUNGQ0VFRkEwQUFDQzdBNzAwMzQ4
NzUwIC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZDRUVGOTBBQUNDNzkw
MDAzNDg3NTAgLyogRE9NSFRNTElucHV0RWxlbWVudFByaXZhdGUuaCAqLzsgfTsKIAkJMzc5MTlD
MjMwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4
IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovOyB9OwogCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5
OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkyRDkwNjYwNjBC
RTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5MDY2MDQwQkUxNDFENDAwOTU2OTk4IC8qIExheW91
dFN0YXRlLmNwcCAqLzsgfTsKKwkJMkQ5MDY2MDcwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDkw
NjYwNTBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuaCAqLzsgfTsKIAkJNDQ4QTI5QkYw
QTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhBMjlCRDBBNDZEOUNCMDAzMDc1
OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJNDQ4QTI5QzAwQTQ2RDlD
QjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAv
KiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTQ0OEFEMjdDMEE0ODEzN0Ew
MDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhBRDI3QTBBNDgxMzc5MDAyM0Qx
NzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OwpAQCAtMzM4Miw2
ICszMzg0LDggQEAKIAkJMkQ5MDY2MEMwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IENsaXBib2FyZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlv
bkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3Np
dGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjIw
QjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQ5MDY2MDQwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRTdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlv
dXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0U3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlG
IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QUQyN0Ew
QTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NjYsNiArOTQ3MCw4
IEBACiAJCQkJQThDRkY1REIwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZVJ1bkJveC5oICovLAog
CQkJCUJDRUE0ODFBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNwcCAqLywKIAkJ
CQlCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oICovLAorCQkJCTJE
OTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8sCisJCQkJMkQ5MDY2
MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8sCiAJCQkJOTM1QzQ3NjAwOUFD
NENEMTAwQTZBQUI0IC8qIExlbmd0aC5oICovLAogCQkJCUE4RUE3QTREMEExOTFBNTIwMEE4RUY1
RiAvKiBMaXN0TWFya2VyQm94LmNwcCAqLywKIAkJCQlBOEVBN0E0OTBBMTkxQTUyMDBBOEVGNUYg
LyogTGlzdE1hcmtlckJveC5oICovLApAQCAtMTEyNDAsNiArMTEyNDYsNyBAQAogCQkJCTkzRjlC
N0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDZGQzQ0MkUwQkFFNUE5RTAwOTBFREUxIC8qIEphdmFTY3JpcHRTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUVDMjlBMDBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTI2MDksNiArMTI2MTYsNyBAQAogCQkJCTA2RkM0
NDJEMEJBRTVBOUUwMDkwRURFMSAvKiBKYXZhU2NyaXB0U3RhdGlzdGljcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMUVDMjk5RjBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxQUEzRjZGMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxv
YWRlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEOTA2NjA2MEJFMTQxRDQwMDk1Njk5OCAv
KiBMYXlvdXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0xheW91dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRT
dGF0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
YXlvdXRTdGF0ZS5oIgorCisjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKKyNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0xheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHJldiwgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBib29sIHVuY2xpcCkKK3sK
KyAgICBtX25leHQgPSBwcmV2OworICAgIG1fb2Zmc2V0ID0gcHJldi0+bV9vZmZzZXQgKyBvZmZz
ZXQ7CisgICAgaWYgKHVuY2xpcCkKKyAgICAgICAgbV9jbGlwcGVkID0gZmFsc2U7CisgICAgZWxz
ZSB7CisgICAgICAgIGlmIChtX2NsaXBwZWQgPSBwcmV2LT5tX2NsaXBwZWQpCisgICAgICAgICAg
ICBtX2NsaXBSZWN0ID0gcHJldi0+bV9jbGlwUmVjdDsKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5o
YXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAgICAgICAgaW50IHggPSBtX29mZnNldC53aWR0aCgp
OworICAgICAgICAgICAgaW50IHkgPSBtX29mZnNldC5oZWlnaHQoKTsKKyAgICAgICAgICAgIFJl
bmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVyLT5sYXllcigpOworICAgICAgICAgICAgSW50UmVj
dCBjbGlwUmVjdCh4LCB5LCBsYXllci0+d2lkdGgoKSwgbGF5ZXItPmhlaWdodCgpKTsKKyAgICAg
ICAgICAgIGlmIChtX2NsaXBwZWQpCisgICAgICAgICAgICAgICAgbV9jbGlwUmVjdC5pbnRlcnNl
Y3QoY2xpcFJlY3QpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbV9jbGlw
UmVjdCA9IGNsaXBSZWN0OworICAgICAgICAgICAgICAgIG1fY2xpcHBlZCA9IHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBsYXllci0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeCwgeSk7
CisgICAgICAgICAgICBtX29mZnNldCA9IEludFNpemUoeCwgeSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgYm9vbCBpbkxheW91dFN0YXRlRGVzdHJveTsK
KyNlbmRpZgorCit2b2lkIExheW91dFN0YXRlOjpkZXN0cm95KFJlbmRlckFyZW5hKiByZW5kZXJB
cmVuYSkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgaW5MYXlvdXRTdGF0ZURlc3Ryb3kgPSB0cnVl
OworI2VuZGlmCisgICAgZGVsZXRlIHRoaXM7CisjaWZuZGVmIE5ERUJVRworICAgIGluTGF5b3V0
U3RhdGVEZXN0cm95ID0gZmFsc2U7CisjZW5kaWYKKyAgICByZW5kZXJBcmVuYS0+ZnJlZSgqKHNp
emVfdCAqKXRoaXMsIHRoaXMpOworfQorCit2b2lkKiBMYXlvdXRTdGF0ZTo6b3BlcmF0b3IgbmV3
KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKSB0aHJvdygpCit7CisgICAgcmV0
dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7Cit9CisKK3ZvaWQgTGF5b3V0U3RhdGU6Om9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwdHIsIHNpemVfdCBzeikKK3sKKyAgICBBU1NFUlQoaW5MYXlv
dXRTdGF0ZURlc3Ryb3kpOworICAgICooc2l6ZV90KilwdHIgPSBzejsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBMYXlvdXRTdGF0ZV9oCisjZGVmaW5lIExheW91dFN0YXRlX2gKKworI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUmVuZGVyQXJlbmE7CitjbGFzcyBSZW5kZXJPYmplY3Q7CisKK2NsYXNzIExheW91
dFN0YXRlIHsKK3B1YmxpYzoKKyAgICBMYXlvdXRTdGF0ZSgpCisgICAgeworICAgIH0KKworICAg
IExheW91dFN0YXRlKExheW91dFN0YXRlKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYg
b2Zmc2V0LCBib29sIHVuY2xpcCA9IGZhbHNlKTsKKworICAgIHZvaWQgZGVzdHJveShSZW5kZXJB
cmVuYSopOworCisgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuCisgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOworCisgICAgLy8gT3ZlcnJp
ZGRlbiB0byBwcmV2ZW50IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgorICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBzaXplX3QpOworCitwcml2YXRlOgorICAgIC8v
IFRoZSBub3JtYWwgb3BlcmF0b3IgbmV3IGlzIGRpc2FsbG93ZWQuCisgICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCkgdGhyb3coKTsKKworcHVibGljOgorICAgIGJvb2wgbV9jbGlwcGVkOwor
ICAgIEludFJlY3QgbV9jbGlwUmVjdDsKKyAgICBJbnRTaXplIG1fb2Zmc2V0OworICAgIHN0cnVj
dCBMYXlvdXRTdGF0ZSogbV9uZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gTGF5b3V0U3RhdGVfaApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAko
cmV2aXNpb24gMjExMjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4OCwxMyArNDg4LDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91
dEJsb2NrKGJvb2wgcmVsYXkKIAogICAgIGlmICghcmVsYXlvdXRDaGlsZHJlbiAmJiBwb3NDaGls
ZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxkTmVlZHNMYXlvdXQoKSAmJiAhc2VsZk5lZWRz
TGF5b3V0KCkpIHsKICAgICAgICAgLy8gQWxsIHdlIGhhdmUgdG8gaXMgbGF5IG91dCBvdXIgcG9z
aXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhmYWxzZSk7
CisgICAgICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGZhbHNlLCB0cnVlKTsKICAgICAgICAg
aWYgKGhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICAgICAgbV9sYXllci0+dXBkYXRlU2Nyb2xs
SW5mb0FmdGVyTGF5b3V0KCk7CiAgICAgICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIEludFJlY3Qgb2xkQm91bmRzOwogICAgIElu
dFJlY3Qgb2xkT3V0bGluZUJveDsKICAgICBib29sIGNoZWNrRm9yUmVwYWludCA9IGNoZWNrRm9y
UmVwYWludER1cmluZ0xheW91dCgpOwpAQCAtNTA1LDYgKzUwNSw5IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXkKICAgICAgICAgb2xkT3V0bGluZUJveC5tb3ZlKHZp
ZXcoKS0+bGF5b3V0RGVsdGEoKSk7CiAgICAgfQogCisgICAgYm9vbCBpc0NlbGwgPSBpc1RhYmxl
Q2VsbCgpOworICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUoeFBvcygp
LCB5UG9zKCkpKTsKKwogICAgIGludCBvbGRXaWR0aCA9IG1fd2lkdGg7CiAgICAgaW50IG9sZENv
bHVtbldpZHRoID0gZGVzaXJlZENvbHVtbldpZHRoKCk7CiAKQEAgLTUzNCw3ICs1MzcsNiBAQCB2
b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5CiAgICAgLy8KICAgICAvLyBT
dGFydCBvdXQgYnkgc2V0dGluZyBvdXIgbWFyZ2luIHZhbHVlcyB0byBvdXIgY3VycmVudCBtYXJn
aW5zLiAgVGFibGUgY2VsbHMgaGF2ZQogICAgIC8vIG5vIG1hcmdpbnMsIHNvIHdlIGRvbid0IGZp
bGwgaW4gdGhlIHZhbHVlcyBmb3IgdGFibGUgY2VsbHMuCi0gICAgYm9vbCBpc0NlbGwgPSBpc1Rh
YmxlQ2VsbCgpOwogICAgIGlmICghaXNDZWxsKSB7CiAgICAgICAgIGluaXRNYXhNYXJnaW5WYWx1
ZXMoKTsKIApAQCAtNjA2LDYgKzYwOCw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2Nr
KGJvb2wgcmVsYXkKICAgICBtX292ZXJmbG93V2lkdGggPSBtYXgobV9vdmVyZmxvd1dpZHRoLCBt
X3dpZHRoKTsKICAgICBtX292ZXJmbG93SGVpZ2h0ID0gbWF4KG1fb3ZlcmZsb3dIZWlnaHQsIG1f
aGVpZ2h0KTsKIAorICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKwogICAgIC8vIFVwZGF0
ZSBvdXIgc2Nyb2xsIGluZm9ybWF0aW9uIGlmIHdlJ3JlIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hp
ZGRlbiBub3cgdGhhdCB3ZSBrbm93IGlmCiAgICAgLy8gd2Ugb3ZlcmZsb3cgb3Igbm90LgogICAg
IGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKQEAgLTY0MCw2ICs2NDQsNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5CiAgICAgICAgIGlmICghcmVwYWludFJlY3QuaXNF
bXB0eSgpICYmIHYgJiYgdi0+ZnJhbWVWaWV3KCkpCiAgICAgICAgICAgICB2LT5mcmFtZVZpZXco
KS0+YWRkUmVwYWludEluZm8odGhpcywgcmVwYWludFJlY3QpOyAvLyBXZSBuZWVkIHRvIGRvIGEg
cGFydGlhbCByZXBhaW50IG9mIG91ciBjb250ZW50LgogICAgIH0KKwogICAgIHNldE5lZWRzTGF5
b3V0KGZhbHNlKTsKIH0KIApAQCAtMTIzOCwxMSArMTI0MywxNiBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvCiAgICAgaGFuZGxlQm90dG9tT2ZCbG9jayh0b3AsIGJv
dHRvbSwgbWFyZ2luSW5mbyk7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9u
ZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKK3ZvaWQgUmVuZGVyQmxvY2s6OmxheW91
dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgYm9vbCBwdXNoT2Zmc2V0
KQogewogICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3RzKSB7CiAgICAgICAgIFJlbmRlck9iamVj
dCogcjsKICAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0
KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKKworICAgICAgICBSZW5kZXJWaWV3KiB2ID0gdmlldygp
OworCisgICAgICAgIHYtPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBwdXNoT2Zmc2V0ID8gSW50U2l6
ZSh4UG9zKCksIHlQb3MoKSkgOiBJbnRTaXplKCksIHRydWUpOworCiAgICAgICAgIGZvciAoIDsg
KHIgPSBpdC5jdXJyZW50KCkpOyArK2l0ICkgewogICAgICAgICAgICAgLy8gV2hlbiBhIG5vbi1w
b3NpdGlvbmVkIGJsb2NrIGVsZW1lbnQgbW92ZXMsIGl0IG1heSBoYXZlIHBvc2l0aW9uZWQgY2hp
bGRyZW4gdGhhdCBhcmUgaW1wbGljaXRseSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZQogICAg
ICAgICAgICAgLy8gbm9uLXBvc2l0aW9uZWQgYmxvY2suICBSYXRoZXIgdGhhbiB0cnlpbmcgdG8g
ZGV0ZWN0IGFsbCBvZiB0aGVzZSBtb3ZlbWVudCBjYXNlcywgd2UganVzdCBhbHdheXMgbGF5IG91
dCBwb3NpdGlvbmVkCkBAIC0xMjU3LDYgKzEyNjcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlv
dXRQb3NpdGlvbmVkT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgci0+
bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgfQorICAgICAgICB2aWV3KCktPnBvcExheW91dFN0
YXRlKCk7CiAgICAgfQogfQogCkBAIC0xMjgyLDYgKzEyOTMsMTAgQEAgdm9pZCBSZW5kZXJCbG9j
azo6cmVwYWludE92ZXJoYW5naW5nRmxvYQogICAgICAgICAKICAgICAgICAgRmxvYXRpbmdPYmpl
Y3QqIHI7CiAgICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+
IGl0KCptX2Zsb2F0aW5nT2JqZWN0cyk7CisKKyAgICAgICAgLy8gRklYTUUJCURPIE5PVCBDT01N
SVQJUmUtZW5hYmxlIExheW91dFN0YXRlIG9wdGltaXphdGlvbiBpZiBwb3NzaWJsZQorICAgICAg
ICBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCktPmxheW91dFN0YXRlKCk7CisgICAg
ICAgIHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUoMCk7CiAgICAgICAgIGZvciAoIDsgKHIgPSBpdC5j
dXJyZW50KCkpOyArK2l0KSB7CiAgICAgICAgICAgICAvLyBPbmx5IHJlcGFpbnQgdGhlIG9iamVj
dCBpZiBpdCBpcyBvdmVyaGFuZ2luZywgaXMgbm90IGluIGl0cyBvd24gbGF5ZXIsIGFuZAogICAg
ICAgICAgICAgLy8gaXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRvIHBhaW50IChub1BhaW50IGlzbid0
IHNldCkuIFdoZW4gcGFpbnRBbGxEZXNjZW5kYW50cyBpcyB0cnVlLCB0aGUgbGF0dGVyCkBAIC0x
MjkxLDYgKzEzMDYsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZXBhaW50T3ZlcmhhbmdpbmdGbG9h
CiAgICAgICAgICAgICAgICAgci0+bm9kZS0+cmVwYWludE92ZXJoYW5naW5nRmxvYXRzKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgdmlldygpLT5zZXRMYXlvdXRTdGF0ZShs
YXlvdXRTdGF0ZSk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJl
dmlzaW9uIDIxMTIzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheW91dEJsb2Nr
Q2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKTsKICAgICB2b2lkIGxheW91dElubGluZUNo
aWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50JiByZXBhaW50VG9wLCBpbnQmIHJlcGFp
bnRCb3R0b20pOwogCi0gICAgdm9pZCBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29sIHJlbGF5
b3V0Q2hpbGRyZW4pOworICAgIHZvaWQgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMoYm9vbCByZWxh
eW91dENoaWxkcmVuLCBib29sIHB1c2hPZmZzZXQgPSBmYWxzZSk7CiAgICAgdm9pZCBpbnNlcnRQ
b3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgcmVtb3ZlUG9zaXRpb25l
ZE9iamVjdChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUG9zaXRpb25l
ZE9iamVjdHMoUmVuZGVyQmxvY2sqKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2
aXNpb24gMjExMjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NzgsNiArNzc4LDEyIEBAIGludCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9j
a1dpZHRoKCkgY28KIAogYm9vbCBSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24oaW50JiB4UG9z
LCBpbnQmIHlQb3MsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CisgICAgaWYgKExheW91dFN0YXRlKiBs
YXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKSkgeworICAgICAgICB4UG9zID0gbGF5
b3V0U3RhdGUtPm1fb2Zmc2V0LndpZHRoKCkgKyBtX3g7CisgICAgICAgIHlQb3MgPSBsYXlvdXRT
dGF0ZS0+bV9vZmZzZXQuaGVpZ2h0KCkgKyBtX3k7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pCiAgICAg
ICAgIGZpeGVkID0gdHJ1ZTsKIApAQCAtOTEzLDYgKzkxOSwxNCBAQCBJbnRSZWN0IFJlbmRlckJv
eDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsCiAKIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQWJzb2x1
dGVSZXBhaW50UmVjdChJbnRSZWN0JiByZWN0LCBib29sIGZpeGVkKQogeworICAgIGlmIChMYXlv
dXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCktPmxheW91dFN0YXRlKCkpIHsKKyAgICAgICAg
cmVjdC5tb3ZlKG1feCwgbV95KTsKKyAgICAgICAgcmVjdC5tb3ZlKGxheW91dFN0YXRlLT5tX29m
ZnNldCk7CisgICAgICAgIGlmIChsYXlvdXRTdGF0ZS0+bV9jbGlwcGVkKQorICAgICAgICAgICAg
cmVjdC5pbnRlcnNlY3QobGF5b3V0U3RhdGUtPm1fY2xpcFJlY3QpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaW50IHggPSByZWN0LngoKSArIG1feDsKICAgICBpbnQgeSA9IHJlY3Qu
eSgpICsgbV95OwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAJKHJl
dmlzaW9uIDIxMTIzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgxLDEyICs0ODEsMTYgQEAgdm9pZCBSZW5kZXJDb250YWluZXI6
OmxheW91dCgpCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCisgICAgdmlldygpLT5w
dXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6ZShtX3gsIG1feSkpOworCiAgICAgUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IG1fZmlyc3RDaGlsZDsKICAgICB3aGlsZSAoY2hpbGQpIHsKICAgICAgICAg
Y2hpbGQtPmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgIEFTU0VSVChjaGlsZC0+aXNSZW5kZXJJ
bmxpbmUoKSB8fCAhY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwogICAgICAgICBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpOwogICAgIH0KKworICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsK
ICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAJKHJldmlzaW9uIDIxMTIzKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcg
QEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbAogCiAgICAgaWYgKCFy
ZWxheW91dENoaWxkcmVuICYmIHBvc0NoaWxkTmVlZHNMYXlvdXQoKSAmJiAhbm9ybWFsQ2hpbGRO
ZWVkc0xheW91dCgpICYmICFzZWxmTmVlZHNMYXlvdXQoKSkgewogICAgICAgICAvLyBBbGwgd2Ug
aGF2ZSB0byBpcyBsYXkgb3V0IG91ciBwb3NpdGlvbmVkIG9iamVjdHMuCi0gICAgICAgIGxheW91
dFBvc2l0aW9uZWRPYmplY3RzKGZhbHNlKTsKKyAgICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVj
dHMoZmFsc2UsIHRydWUpOwogICAgICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCiAgICAgICAg
ICAgICBtX2xheWVyLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKICAgICAgICAgc2V0
TmVlZHNMYXlvdXQoZmFsc2UpOwpAQCAtMjI3LDYgKzIyNyw4IEBAIHZvaWQgUmVuZGVyRmxleGli
bGVCb3g6OmxheW91dEJsb2NrKGJvb2wKICAgICAgICAgb2xkT3V0bGluZUJveC5tb3ZlKHZpZXco
KS0+bGF5b3V0RGVsdGEoKSk7CiAgICAgfQogCisgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUo
dGhpcywgSW50U2l6ZShtX3gsIG1feSkpOworCiAgICAgaW50IHByZXZpb3VzV2lkdGggPSBtX3dp
ZHRoOwogICAgIGludCBwcmV2aW91c0hlaWdodCA9IG1faGVpZ2h0OwogICAgIApAQCAtMjk0LDYg
KzI5Niw4IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wKICAgICBp
ZiAobV9vdmVyZmxvd1dpZHRoIDwgbV93aWR0aCkKICAgICAgICAgbV9vdmVyZmxvd1dpZHRoID0g
bV93aWR0aDsKIAorICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKwogICAgIC8vIFVwZGF0
ZSBvdXIgc2Nyb2xsYmFycyBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93
IHRoYXQgd2Uga25vdyBpZgogICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KICAgICBpZiAoaGFz
T3ZlcmZsb3dDbGlwKCkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lv
biAyMTEyMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA2LDkgKzIwNiwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBv
c2l0aW9ucyhiCiAgICAgICAgICAgICBBU1NFUlQodmlldyk7CiAgICAgICAgICAgICBpZiAodmll
dyAmJiAhdmlldy0+cHJpbnRpbmcoKSkgewogICAgICAgICAgICAgICAgIGJvb2wgZGlkTW92ZSA9
IG5ld091dGxpbmVCb3gubG9jYXRpb24oKSAhPSBtX291dGxpbmVCb3gubG9jYXRpb24oKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWRpZE1vdmUgJiYgIW1fcmVwYWludE92ZXJmbG93T25SZXNpemUp
CisgICAgICAgICAgICAgICAgaWYgKCFkaWRNb3ZlICYmICFtX3JlcGFpbnRPdmVyZmxvd09uUmVz
aXplKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FCQlETyBOT1QgQ09NTUlUCVRlbXBv
cmFyeSBvcHRpbWl6YXRpb24ga2lsbGVyCisgICAgICAgICAgICAgICAgICAgIExheW91dFN0YXRl
KiBsYXlvdXRTdGF0ZSA9IHZpZXctPmxheW91dFN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAg
IHZpZXctPnNldExheW91dFN0YXRlKDApOwogICAgICAgICAgICAgICAgICAgICBtX29iamVjdC0+
cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQobV9yZXBhaW50UmVjdCwgbV9vdXRsaW5lQm94KTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChkaWRNb3ZlIHx8IG5ld1JlY3QgIT0gbV9yZXBhaW50
UmVjdCkgeworICAgICAgICAgICAgICAgICAgICB2aWV3LT5zZXRMYXlvdXRTdGF0ZShsYXlvdXRT
dGF0ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkaWRNb3ZlIHx8IG5ld1JlY3QgIT0g
bV9yZXBhaW50UmVjdCkgewogICAgICAgICAgICAgICAgICAgICB2aWV3LT5yZXBhaW50Vmlld1Jl
Y3RhbmdsZShtX3JlcGFpbnRSZWN0KTsKICAgICAgICAgICAgICAgICAgICAgdmlldy0+cmVwYWlu
dFZpZXdSZWN0YW5nbGUobmV3UmVjdCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMTEyMykKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMyw4ICs3MjMsOSBAQCB2
b2lkIFJlbmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdCbG9ja3NGCiAgICAgICAgIH0KIAogICAg
ICAgICBsYXN0ID0gbzsKLSAgICAgICAgaWYgKHNjaGVkdWxlUmVsYXlvdXQgJiYgKGxhc3QtPmlz
VGV4dEZpZWxkKCkgfHwgbGFzdC0+aXNUZXh0QXJlYSgpKSkKLSAgICAgICAgICAgIGJyZWFrOwor
Ly8gRklYTUUJCURPIE5PVCBDT01NSVQJCURpc2FibGVkIHN1YnRyZWUgbGF5b3V0CisvLyAgICAg
ICAgaWYgKHNjaGVkdWxlUmVsYXlvdXQgJiYgKGxhc3QtPmlzVGV4dEZpZWxkKCkgfHwgbGFzdC0+
aXNUZXh0QXJlYSgpKSkKKy8vICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG8gPSBvLT5jb250
YWluZXIoKTsKICAgICB9CiAKQEAgLTI0MjEsOCArMjQyMiwxMiBAQCBSZW5kZXJPYmplY3QqIFJl
bmRlck9iamVjdDo6Y29udGFpbmVyKCkgCiAgICAgLy8gdGhlIGxheW91dCBvZiB0aGUgcG9zaXRp
b25lZCBvYmplY3QuICBUaGlzIGRvZXMgbWVhbiB0aGF0IGNhbGNBYnNvbHV0ZUhvcml6b250YWwg
YW5kCiAgICAgLy8gY2FsY0Fic29sdXRlVmVydGljYWwgaGF2ZSB0byB1c2UgY29udGFpbmVyKCku
CiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcGFyZW50KCk7CisKKyAgICBpZiAoaXNUZXh0KCkpCisg
ICAgICAgIHJldHVybiBvOworCiAgICAgRVBvc2l0aW9uIHBvcyA9IG1fc3R5bGUtPnBvc2l0aW9u
KCk7Ci0gICAgaWYgKCFpc1RleHQoKSAmJiBwb3MgPT0gRml4ZWRQb3NpdGlvbikgeworICAgIGlm
IChwb3MgPT0gRml4ZWRQb3NpdGlvbikgewogICAgICAgICAvLyBjb250YWluZXIoKSBjYW4gYmUg
Y2FsbGVkIG9uIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBpbiB0aGUKICAgICAgICAgLy8gdHJlZSB5
ZXQuICBXZSBkb24ndCBjYWxsIHZpZXcoKSBzaW5jZSBpdCB3aWxsIGFzc2VydCBpZiBpdAogICAg
ICAgICAvLyBjYW4ndCBnZXQgYmFjayB0byB0aGUgY2FudmFzLiAgSW5zdGVhZCB3ZSBqdXN0IHdh
bGsgYXMgaGlnaCB1cApAQCAtMjQzMSw3ICsyNDM2LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJP
YmplY3Q6OmNvbnRhaW5lcigpIAogICAgICAgICAvLyB3ZSdsbCBqdXN0IHJldHVybiAwKS4KICAg
ICAgICAgd2hpbGUgKG8gJiYgby0+cGFyZW50KCkpCiAgICAgICAgICAgICBvID0gby0+cGFyZW50
KCk7Ci0gICAgfSBlbHNlIGlmICghaXNUZXh0KCkgJiYgcG9zID09IEFic29sdXRlUG9zaXRpb24p
IHsKKyAgICB9IGVsc2UgaWYgKHBvcyA9PSBBYnNvbHV0ZVBvc2l0aW9uKSB7CiAgICAgICAgIC8v
IFNhbWUgZ29lcyBoZXJlLiAgV2UgdGVjaG5pY2FsbHkganVzdCB3YW50IG91ciBjb250YWluaW5n
IGJsb2NrLCBidXQKICAgICAgICAgLy8gd2UgbWF5IG5vdCBoYXZlIG9uZSBpZiB3ZSdyZSBwYXJ0
IG9mIGFuIHVuaW5zdGFsbGVkIHN1YnRyZWUuICBXZSdsbAogICAgICAgICAvLyBjbGltYiBhcyBo
aWdoIGFzIHdlIGNhbiB0aG91Z2guCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShy
ZXZpc2lvbiAyMTEyMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZpeGVkVGFibGVMYXlvdXQu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1
ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCkBA
IC0yNjcsNyArMjY4LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKIAogICAgIGlmIChw
b3NDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxkTmVlZHNMYXlvdXQoKSAmJiAhc2Vs
Zk5lZWRzTGF5b3V0KCkpIHsKICAgICAgICAgLy8gQWxsIHdlIGhhdmUgdG8gZG8gaXMgbGF5IG91
dCBvdXIgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0
cyhmYWxzZSk7CisgICAgICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGZhbHNlLCB0cnVlKTsK
ICAgICAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjg0LDYgKzI4NSw4IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgIG9s
ZE91dGxpbmVCb3gubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgIH0KICAgICAKKyAg
ICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CisKICAg
ICBtX2hlaWdodCA9IDA7CiAgICAgbV9vdmVyZmxvd0hlaWdodCA9IDA7CiAgICAgbV9vdmVyZmxv
d1RvcCA9IDA7CkBAIC00MjQsNiArNDI3LDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkK
ICAgICAvLyBGSVhNRTogT25seSBwYXNzIHRydWUgaWYgd2lkdGggb3IgaGVpZ2h0IGNoYW5nZWQu
CiAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHModHJ1ZSk7CiAKKyAgICB2aWV3KCktPnBvcExh
eW91dFN0YXRlKCk7CisKICAgICBib29sIGRpZEZ1bGxSZXBhaW50ID0gdHJ1ZTsKICAgICAvLyBS
ZXBhaW50IHdpdGggb3VyIG5ldyBib3VuZHMgaWYgdGhleSBhcmUgZGlmZmVyZW50IGZyb20gb3Vy
IG9sZCBib3VuZHMuCiAgICAgaWYgKGNoZWNrRm9yUmVwYWludCkKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gMjExMjMpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNvbC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xODQs
MTUgKzE4NSwxOCBAQCBJbnRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVDbGlwcGVkCiB2
b2lkIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYg
ciwgYm9vbCBmaXhlZCkKIHsKICAgICByLnNldFkoci55KCkgKyBtX3RvcEV4dHJhKTsKLSAgICBy
Lm1vdmUoLXBhcmVudCgpLT54UG9zKCksIC1wYXJlbnQoKS0+eVBvcygpKTsgLy8gUm93cyBhcmUg
aW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwgc28gZG9uJ3QgYWRkIHRoZWlyIG9mZnNldCBp
bi4KKyAgICBpZiAoIXZpZXcoKS0+bGF5b3V0U3RhdGUoKSkKKyAgICAgICAgci5tb3ZlKC1wYXJl
bnQoKS0+eFBvcygpLCAtcGFyZW50KCktPnlQb3MoKSk7IC8vIFJvd3MgYXJlIGluIHRoZSBzYW1l
IGNvb3JkaW5hdGUgc3BhY2UsIHNvIGRvbid0IGFkZCB0aGVpciBvZmZzZXQgaW4uCiAgICAgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGZpeGVkKTsKIH0KIAogYm9v
bCBSZW5kZXJUYWJsZUNlbGw6OmFic29sdXRlUG9zaXRpb24oaW50JiB4UG9zLCBpbnQmIHlQb3Ms
IGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQgPSBSZW5kZXJCbG9jazo6YWJz
b2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zLCBmaXhlZCk7Ci0gICAgeFBvcyAtPSBwYXJlbnQoKS0+
eFBvcygpOyAvLyBSb3dzIGFyZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHNwYWNlLCBzbyBkb24n
dCBhZGQgdGhlaXIgb2Zmc2V0IGluLgotICAgIHlQb3MgLT0gcGFyZW50KCktPnlQb3MoKTsKKyAg
ICBpZiAoIXZpZXcoKS0+bGF5b3V0U3RhdGUoKSkgeworICAgICAgICB4UG9zIC09IHBhcmVudCgp
LT54UG9zKCk7IC8vIFJvd3MgYXJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UsIHNvIGRv
bid0IGFkZCB0aGVpciBvZmZzZXQgaW4uCisgICAgICAgIHlQb3MgLT0gcGFyZW50KCktPnlQb3Mo
KTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmNwcAkocmV2aXNpb24gMjExMjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJs
ZUNlbGwuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTEzLDYgKzExNSw5IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OmxheW91dCgpCiB7CiAg
ICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCisgICAgLy8gVGFibGUgcm93cyBkbyBub3QgYWRk
IHRyYW5zbGF0aW9uLgorICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUo
KSk7CisKICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNU
YWJsZUNlbGwoKSkgewogICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGFibGVDZWxsKj4oY2hpbGQpOwpAQCAtMTIyLDYgKzEyNyw4IEBAIHZvaWQg
UmVuZGVyVGFibGVSb3c6OmxheW91dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CisKKyAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFs
c2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJ
KHJldmlzaW9uIDIxMTIzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRh
YmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGVSb3cuaCIKKy8vIEZJWE1FCURPIE5PVCBDT01NSVQJTmVlZGVkIGZvciB0ZW1wb3Jhcnkg
c3R1ZmYgYmVsb3cKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yODMs
OCArMjg1LDEzIEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDZWxsV2lkdGhzKCkKICAg
ICAgICAgICAgIGludCBvbGRXaWR0aCA9IGNlbGwtPndpZHRoKCk7CiAgICAgICAgICAgICBpZiAo
dyAhPSBvbGRXaWR0aCkgewogICAgICAgICAgICAgICAgIGNlbGwtPnNldE5lZWRzTGF5b3V0KHRy
dWUpOwotICAgICAgICAgICAgICAgIGlmICghdGFibGUoKS0+c2VsZk5lZWRzTGF5b3V0KCkgJiYg
Y2VsbC0+Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkpCisgICAgICAgICAgICAgICAgaWYg
KCF0YWJsZSgpLT5zZWxmTmVlZHNMYXlvdXQoKSAmJiBjZWxsLT5jaGVja0ZvclJlcGFpbnREdXJp
bmdMYXlvdXQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRQkJRE8gTk9UIENPTU1J
VAlLaWxsIHRoZSBvcHRpbWl6YXRpb24gZm9yIG5vdworICAgICAgICAgICAgICAgICAgICBMYXlv
dXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCktPmxheW91dFN0YXRlKCk7CisgICAgICAgICAg
ICAgICAgICAgIHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUoMCk7CiAgICAgICAgICAgICAgICAgICAg
IGNlbGwtPnJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgdmlldygpLT5zZXRMYXlvdXRT
dGF0ZShsYXlvdXRTdGF0ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNl
bGwtPnNldFdpZHRoKHcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01MjcsOCArNTM0
LDEzIEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHQKICAgICAgICAg
ICAgIGludCBiZSA9IHJIZWlnaHQgLSBjZWxsLT5oZWlnaHQoKSAtIHRlOwogICAgICAgICAgICAg
Y2VsbC0+c2V0Q2VsbFRvcEV4dHJhKHRlKTsKICAgICAgICAgICAgIGNlbGwtPnNldENlbGxCb3R0
b21FeHRyYShiZSk7Ci0gICAgICAgICAgICBpZiAoKHRlICE9IG9sZFRlIHx8IGJlID4gb2xkQmUp
ICYmICF0YWJsZSgpLT5zZWxmTmVlZHNMYXlvdXQoKSAmJiBjZWxsLT5jaGVja0ZvclJlcGFpbnRE
dXJpbmdMYXlvdXQoKSkKKyAgICAgICAgICAgIGlmICgodGUgIT0gb2xkVGUgfHwgYmUgPiBvbGRC
ZSkgJiYgIXRhYmxlKCktPnNlbGZOZWVkc0xheW91dCgpICYmIGNlbGwtPmNoZWNrRm9yUmVwYWlu
dER1cmluZ0xheW91dCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUUJCURPIE5PVCBDT01N
SVQgRGlzYWJsaW5nIG9wdGltaXphdGlvbiBoZXJlCisgICAgICAgICAgICAgICAgTGF5b3V0U3Rh
dGUqIGxheW91dFN0YXRlID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpOworICAgICAgICAgICAgICAg
IHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUoMCk7CiAgICAgICAgICAgICAgICAgY2VsbC0+cmVwYWlu
dCgpOworICAgICAgICAgICAgICAgIHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUobGF5b3V0U3RhdGUp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBJbnRSZWN0IG9sZENl
bGxSZWN0KGNlbGwtPnhQb3MoKSwgY2VsbC0+eVBvcygpIC0gY2VsbC0+Ym9yZGVyVG9wRXh0cmEo
KSAsIGNlbGwtPndpZHRoKCksIGNlbGwtPmhlaWdodCgpKTsKICAgICAgICAgCkBAIC01NDYsOCAr
NTU4LDEzIEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHQKICAgICAg
ICAgICAgIC8vIElmIHRoZSBjZWxsIG1vdmVkLCB3ZSBoYXZlIHRvIHJlcGFpbnQgaXQgYXMgd2Vs
bCBhcyBhbnkgZmxvYXRpbmcvcG9zaXRpb25lZAogICAgICAgICAgICAgLy8gZGVzY2VuZGFudHMu
ICBBbiBleGNlcHRpb24gaXMgaWYgd2UgbmVlZCBhIGxheW91dC4gIEluIHRoaXMgY2FzZSwgd2Ug
a25vdyB3ZSdyZSBnb2luZyB0bwogICAgICAgICAgICAgLy8gcmVwYWludCBvdXJzZWx2ZXMgKGFu
ZCB0aGUgY2VsbCkgYW55d2F5LgotICAgICAgICAgICAgaWYgKCF0YWJsZSgpLT5zZWxmTmVlZHNM
YXlvdXQoKSAmJiBjZWxsLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSkKKyAgICAgICAg
ICAgIGlmICghdGFibGUoKS0+c2VsZk5lZWRzTGF5b3V0KCkgJiYgY2VsbC0+Y2hlY2tGb3JSZXBh
aW50RHVyaW5nTGF5b3V0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRQkJRE8gTk9UIENP
TU1JVAlLaWxsIHRoZSBvcHRpbWl6YXRpb24gZm9yIG5vdy4gQ2FuIGJlIHJldml2ZWQgYWZ0ZXIg
dmVyaWZpY2F0aW9uIG9uY2UgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50
UmVjdCBpcyBmaXhlZC4gSnVzdCBuZWVkIHRvIHB1c2ggYSBzdGF0ZSBmb3Igb3Vyc2VsdmVzIGhl
cmUuCisgICAgICAgICAgICAgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlID0gdmlldygpLT5s
YXlvdXRTdGF0ZSgpOworICAgICAgICAgICAgICAgIHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUoMCk7
CiAgICAgICAgICAgICAgICAgY2VsbC0+cmVwYWludER1cmluZ0xheW91dElmTW92ZWQob2xkQ2Vs
bFJlY3QpOworICAgICAgICAgICAgICAgIHZpZXcoKS0+c2V0TGF5b3V0U3RhdGUobGF5b3V0U3Rh
dGUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gMjExMjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBSZW5kZXJWaWV3OjpS
ZW5kZXJWaWV3KE5vZGUqIG5vZGUsIEZyYW1lCiAgICAgLCBtX3NlbGVjdGlvbkVuZFBvcygtMSkK
ICAgICAsIG1fcHJpbnRJbWFnZXModHJ1ZSkKICAgICAsIG1fbWF4aW1hbE91dGxpbmVTaXplKDAp
CisgICAgLCBtX2xheW91dFN0YXRlKDApCiB7CiAgICAgLy8gQ2xlYXIgb3VyIGFub255bW91cyBi
aXQsIHNldCBiZWNhdXNlIFJlbmRlck9iamVjdCBhc3N1bWVzCiAgICAgLy8gYW55IHJlbmRlcmVy
IHdpdGggZG9jdW1lbnQgYXMgdGhlIG5vZGUgaXMgYW5vbnltb3VzLgpAQCAtOTksNiArMTAwLDEx
IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBpZiAocmVsYXlvdXRDaGlsZHJlbikK
ICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CiAgICAgCisgICAgQVNT
RVJUKCFtX2xheW91dFN0YXRlKTsKKyAgICBMYXlvdXRTdGF0ZSBzdGF0ZTsKKyAgICBzdGF0ZS5t
X2NsaXBwZWQgPSBmYWxzZTsKKyAgICBtX2xheW91dFN0YXRlID0gJnN0YXRlOworCiAgICAgaWYg
KG5lZWRzTGF5b3V0KCkpCiAgICAgICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKIApAQCAtMTA5
LDYgKzExNSw4IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBzZXRPdmVyZmxvd1dp
ZHRoKGRvY1dpZHRoKCkpOwogICAgIHNldE92ZXJmbG93SGVpZ2h0KGRvY0hlaWdodCgpKTsKIAor
ICAgIEFTU0VSVChtX2xheW91dFN0YXRlID09ICZzdGF0ZSk7CisgICAgbV9sYXlvdXRTdGF0ZSA9
IDA7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCShyZXZpc2lvbiAyMTEyMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmbmRlZiBSZW5kZXJWaWV3X2gK
ICNkZWZpbmUgUmVuZGVyVmlld19oCiAKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkzLDYgKzk0LDEy
IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBsYXlvdXREZWx0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5b3V0RGVsdGE7IH0KICAgICB2b2lkIGFkZExheW91dERlbHRhKGNvbnN0IEludFNp
emUmIGRlbHRhKSB7IG1fbGF5b3V0RGVsdGEgKz0gZGVsdGE7IH0KIAorICAgIHZvaWQgcHVzaExh
eW91dFN0YXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9mZnNldCwg
Ym9vbCB1bmNsaXAgPSBmYWxzZSkgeyBtX2xheW91dFN0YXRlID0gbmV3IChyZW5kZXJBcmVuYSgp
KSBMYXlvdXRTdGF0ZShtX2xheW91dFN0YXRlLCByZW5kZXJlciwgb2Zmc2V0LCB1bmNsaXApOyB9
CisgICAgdm9pZCBwb3BMYXlvdXRTdGF0ZSgpIHsgTGF5b3V0U3RhdGUqIHN0YXRlID0gbV9sYXlv
dXRTdGF0ZTsgbV9sYXlvdXRTdGF0ZSA9IHN0YXRlLT5tX25leHQ7IHN0YXRlLT5kZXN0cm95KHJl
bmRlckFyZW5hKCkpOyB9CisgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXlvdXRTdGF0ZTsgfQorICAgIC8vIEZJWE1FCURPIE5PVCBDT01NSVQJVGVtcG9y
YXJ5IGZvciB2YWxpZGF0aW9uCisgICAgdm9pZCBzZXRMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSog
c3RhdGUpIHsgbV9sYXlvdXRTdGF0ZSA9IHN0YXRlOyB9CisKIHByb3RlY3RlZDoKICAgICBGcmFt
ZVZpZXcqIG1fZnJhbWVWaWV3OwogCkBAIC0xMTcsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBp
bnQgbV90cnVuY2F0b3JXaWR0aDsKICAgICBib29sIG1fZm9yY2VkUGFnZUJyZWFrOwogICAgIElu
dFNpemUgbV9sYXlvdXREZWx0YTsKKyAgICBMYXlvdXRTdGF0ZSogbV9sYXlvdXRTdGF0ZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCShyZXZpc2lvbiAy
MTEyMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YmlkaVJlb3JkZXJDaGFyYWN0ZXJzKAog
ICAgIC8vIENyZWF0ZSBSZW5kZXJUZXh0CiAgICAgUmVuZGVyVGV4dCogdGV4dCA9IG5ldyAoZG9j
dW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlclRleHQoZG9jdW1lbnQsIHN0cmluZy5pbXBsKCkp
OwogICAgIHRleHQtPnNldFN0eWxlKGJsb2NrU3R5bGUpOwotICAgIGJsb2NrLT5hZGRDaGlsZCh0
ZXh0KTsKKyAgICBibG9jay0+YXBwZW5kQ2hpbGROb2RlKHRleHQsIGZhbHNlKTsKICAgICAKICAg
ICAvLyBDYWxsIGJpZGlSZW9yZGVyTGluZQogICAgIEJpZGlTdGF0ZSBiaWRpOwpAQCAtMTc0LDcg
KzE3NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmJpZGlSZW9yZGVyQ2hhcmFjdGVycygKICAgICB9
CiAKICAgICAvLyBUZWFyIGRvd24gdGVtcG9yYXJ5IFJlbmRlckJsb2NrLCBSZW5kZXJUZXh0LCBh
bmQgQmlkaVJ1bnMKLSAgICBibG9jay0+cmVtb3ZlQ2hpbGQodGV4dCk7CisgICAgYmxvY2stPnJl
bW92ZUNoaWxkTm9kZSh0ZXh0LCBmYWxzZSk7CiAgICAgdGV4dC0+ZGVzdHJveSgpOwogICAgIGJs
b2NrLT5kZXN0cm95KCk7CiAgICAgZGVsZXRlQmlkaVJ1bnMoZG9jdW1lbnQtPnJlbmRlckFyZW5h
KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>14216</attachid>
            <date>2007-04-26 16:17:25 -0700</date>
            <delta_ts>2007-04-26 16:17:25 -0700</delta_ts>
            <desc>Baseline test results for r21123</desc>
            <filename>r21123 baseline results.txt</filename>
            <type>text/plain</type>
            <size>140</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">MAk3ODIKMQk3OTUKMgk4MjMKMwk4NDcKNAk4NjIKNQk4ODEKNgk5MDUKNwk5MjYKOAk5NTYKOQk5
ODcKMTAJMTAxMgoxMQkxMDM2CjEyCTEwNjMKMTMJMTA4NQoxNAkxMTEyCjE1CTExMzQKMTYJMTE1
NQoxNwkxMTgyCjE4CTEyMDEKMTkJMTIyNgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>14217</attachid>
            <date>2007-04-26 16:20:20 -0700</date>
            <delta_ts>2007-04-26 16:20:20 -0700</delta_ts>
            <desc>Test results after applying patch r0.4 to r21123</desc>
            <filename>r21123+r0.4 results.txt</filename>
            <type>text/plain</type>
            <size>130</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">MAk2NzUKMQk2NjEKMgk2NjUKMwk2NjEKNAk2NjEKNQk2NTgKNgk2NTcKNwk2NjQKOAk2NjEKOQk2
NjMKMTAJNjYwCjExCTY2MQoxMgk2NjAKMTMJNjYzCjE0CTY2MQoxNQk2NjAKMTYJNjYyCjE3CTY2
MQoxOAk2NjEKMTkJNjYxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14236</attachid>
            <date>2007-04-27 12:55:43 -0700</date>
            <delta_ts>2007-04-28 10:44:21 -0700</delta_ts>
            <desc>Keep track of absolute translation and clip during layout</desc>
            <filename>repaintRectOptimization_r0.7.patch</filename>
            <type>text/plain</type>
            <size>42082</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMTE0OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzEsNiArMjcxLDggQEAKIAkJMUNGQ0VFRkEwQUFDQzdBNzAwMzQ4
NzUwIC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZDRUVGOTBBQUNDNzkw
MDAzNDg3NTAgLyogRE9NSFRNTElucHV0RWxlbWVudFByaXZhdGUuaCAqLzsgfTsKIAkJMzc5MTlD
MjMwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4
IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovOyB9OwogCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5
OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkyRDkwNjYwNjBC
RTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5MDY2MDQwQkUxNDFENDAwOTU2OTk4IC8qIExheW91
dFN0YXRlLmNwcCAqLzsgfTsKKwkJMkQ5MDY2MDcwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDkw
NjYwNTBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuaCAqLzsgfTsKIAkJNDQ4QTI5QkYw
QTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhBMjlCRDBBNDZEOUNCMDAzMDc1
OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJNDQ4QTI5QzAwQTQ2RDlD
QjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAv
KiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTQ0OEFEMjdDMEE0ODEzN0Ew
MDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhBRDI3QTBBNDgxMzc5MDAyM0Qx
NzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OwpAQCAtMzM4Miw2
ICszMzg0LDggQEAKIAkJMkQ5MDY2MEMwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IENsaXBib2FyZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlv
bkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3Np
dGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjIw
QjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQ5MDY2MDQwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRTdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlv
dXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0U3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlG
IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QUQyN0Ew
QTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NjYsNiArOTQ3MCw4
IEBACiAJCQkJQThDRkY1REIwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZVJ1bkJveC5oICovLAog
CQkJCUJDRUE0ODFBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNwcCAqLywKIAkJ
CQlCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oICovLAorCQkJCTJE
OTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8sCisJCQkJMkQ5MDY2
MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8sCiAJCQkJOTM1QzQ3NjAwOUFD
NENEMTAwQTZBQUI0IC8qIExlbmd0aC5oICovLAogCQkJCUE4RUE3QTREMEExOTFBNTIwMEE4RUY1
RiAvKiBMaXN0TWFya2VyQm94LmNwcCAqLywKIAkJCQlBOEVBN0E0OTBBMTkxQTUyMDBBOEVGNUYg
LyogTGlzdE1hcmtlckJveC5oICovLApAQCAtMTEyNDAsNiArMTEyNDYsNyBAQAogCQkJCTkzRjlC
N0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDZGQzQ0MkUwQkFFNUE5RTAwOTBFREUxIC8qIEphdmFTY3JpcHRTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUVDMjlBMDBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTI2MDksNiArMTI2MTYsNyBAQAogCQkJCTA2RkM0
NDJEMEJBRTVBOUUwMDkwRURFMSAvKiBKYXZhU2NyaXB0U3RhdGlzdGljcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMUVDMjk5RjBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxQUEzRjZGMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxv
YWRlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEOTA2NjA2MEJFMTQxRDQwMDk1Njk5OCAv
KiBMYXlvdXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZp
c2lvbiAyMTE0OSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MDksNyArNDA5LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1
YnRyZWUKICAgICAgICAgbGF5ZXItPmNoZWNrRm9yUmVwYWludE9uUmVzaXplKCk7CiAKICAgICBw
YXVzZVNjaGVkdWxlZEV2ZW50cygpOworCisgICAgaWYgKHN1YnRyZWUpCisgICAgICAgIHJvb3Qt
PnZpZXcoKS0+cHVzaExheW91dFN0YXRlKHJvb3QpOwogICAgIHJvb3QtPmxheW91dCgpOworICAg
IGlmIChzdWJ0cmVlKQorICAgICAgICByb290LT52aWV3KCktPnBvcExheW91dFN0YXRlKCk7CiAg
ICAgZC0+bGF5b3V0Um9vdCA9IDA7CiAKICAgICBtX2ZyYW1lLT5pbnZhbGlkYXRlU2VsZWN0aW9u
KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEx
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCisKKyNpbmNsdWRlICJS
ZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0xheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHJldiwgUmVuZGVyQm94KiBy
ZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIEFTU0VSVChwcmV2KTsKKwor
ICAgIG1fbmV4dCA9IHByZXY7CisKKyAgICBib29sIGZpeGVkID0gcmVuZGVyZXItPmlzUG9zaXRp
b25lZCgpICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247
CisgICAgaWYgKGZpeGVkKSB7CisgICAgICAgIGludCBmaXhlZFggPSAwOworICAgICAgICBpbnQg
Zml4ZWRZID0gMDsKKyAgICAgICAgcmVuZGVyZXItPnZpZXcoKS0+YWJzb2x1dGVQb3NpdGlvbihm
aXhlZFgsIGZpeGVkWSwgdHJ1ZSk7CisgICAgICAgIG1fb2Zmc2V0ID0gSW50U2l6ZShmaXhlZFgs
IGZpeGVkWSkgKyBvZmZzZXQ7CisgICAgfSBlbHNlCisgICAgICAgIG1fb2Zmc2V0ID0gcHJldi0+
bV9vZmZzZXQgKyBvZmZzZXQ7CisKKyAgICBpZiAocmVuZGVyZXItPmlzUmVsUG9zaXRpb25lZCgp
KSB7CisgICAgICAgIGludCByZWxYID0gMDsKKyAgICAgICAgaW50IHJlbFkgPSAwOworICAgICAg
ICByZW5kZXJlci0+Ym94TGF5ZXIoKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldChyZWxYLCByZWxZ
KTsKKyAgICAgICAgbV9vZmZzZXQgKz0gSW50U2l6ZShyZWxYLCByZWxZKTsKKyAgICB9CisKKyAg
ICBpZiAoZml4ZWQpCisgICAgICAgIG1fY2xpcHBlZCA9IGZhbHNlOworICAgIGVsc2UgaWYgKG1f
Y2xpcHBlZCA9IHByZXYtPm1fY2xpcHBlZCkKKyAgICAgICAgbV9jbGlwUmVjdCA9IHByZXYtPm1f
Y2xpcFJlY3Q7CisgICAgaWYgKHJlbmRlcmVyLT5oYXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAg
ICBpbnQgeCA9IG1fb2Zmc2V0LndpZHRoKCk7CisgICAgICAgIGludCB5ID0gbV9vZmZzZXQuaGVp
Z2h0KCk7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVyLT5ib3hMYXllcigp
OworICAgICAgICBJbnRSZWN0IGNsaXBSZWN0KHgsIHksIGxheWVyLT53aWR0aCgpLCBsYXllci0+
aGVpZ2h0KCkpOworICAgICAgICBpZiAobV9jbGlwcGVkKQorICAgICAgICAgICAgbV9jbGlwUmVj
dC5pbnRlcnNlY3QoY2xpcFJlY3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fY2xp
cFJlY3QgPSBjbGlwUmVjdDsKKyAgICAgICAgICAgIG1fY2xpcHBlZCA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgbGF5ZXItPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KHgsIHkpOworICAgICAgICBt
X29mZnNldCA9IEludFNpemUoeCwgeSk7CisgICAgfQorICAgIC8vIEZJWE1FOiBBcHBseSBjb250
cm9sIGNsaXAgaWYgcHJlc2VudCA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM0NDM+LgorfQorCitMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoUmVuZGVyT2JqZWN0KiBy
b290KQoreworICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyID0gcm9vdC0+Y29udGFpbmVyKCk7
CisgICAgbV9jbGlwcGVkID0gdHJ1ZTsKKyAgICBtX2NsaXBSZWN0ID0gY29udGFpbmVyLT5hYnNv
bHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKKyAgICBpbnQgeCA9IDA7CisgICAgaW50IHkgPSAw
OworICAgIGNvbnRhaW5lci0+YWJzb2x1dGVQb3NpdGlvbih4LCB5KTsKKyAgICBtX29mZnNldCA9
IEludFNpemUoeCwgeSk7CisgICAgbV9uZXh0ID0gMDsKK30KKworI2lmbmRlZiBOREVCVUcKK3N0
YXRpYyBib29sIGluTGF5b3V0U3RhdGVEZXN0cm95OworI2VuZGlmCisKK3ZvaWQgTGF5b3V0U3Rh
dGU6OmRlc3Ryb3koUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQoreworI2lmbmRlZiBOREVCVUcK
KyAgICBpbkxheW91dFN0YXRlRGVzdHJveSA9IHRydWU7CisjZW5kaWYKKyAgICBkZWxldGUgdGhp
czsKKyNpZm5kZWYgTkRFQlVHCisgICAgaW5MYXlvdXRTdGF0ZURlc3Ryb3kgPSBmYWxzZTsKKyNl
bmRpZgorICAgIHJlbmRlckFyZW5hLT5mcmVlKCooc2l6ZV90ICopdGhpcywgdGhpcyk7Cit9CisK
K3ZvaWQqIExheW91dFN0YXRlOjpvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVuYSog
cmVuZGVyQXJlbmEpIHRocm93KCkKK3sKKyAgICByZXR1cm4gcmVuZGVyQXJlbmEtPmFsbG9jYXRl
KHN6KTsKK30KKwordm9pZCBMYXlvdXRTdGF0ZTo6b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHB0ciwg
c2l6ZV90IHN6KQoreworICAgIEFTU0VSVChpbkxheW91dFN0YXRlRGVzdHJveSk7CisgICAgKihz
aXplX3QqKXB0ciA9IHN6OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFN0YXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9MYXlv
dXRTdGF0ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvLyBGSVhNRQlETyBOT1Qg
Q09NTUlUCU5lZWQgdG8gYWRkIExheW91dFN0YXRlLiogdG8gbm9uLU1hYyBPUyBYIGJ1aWxkcwor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
YXlvdXRTdGF0ZV9oCisjZGVmaW5lIExheW91dFN0YXRlX2gKKworI2luY2x1ZGUgIkludFJlY3Qu
aCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UmVuZGVyQXJlbmE7CitjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJPYmplY3Q7CisKK2Ns
YXNzIExheW91dFN0YXRlIHsKK3B1YmxpYzoKKyAgICBMYXlvdXRTdGF0ZSgpCisgICAgICAgIDog
bV9jbGlwcGVkKGZhbHNlKQorICAgICAgICAsIG1fbmV4dCgwKQorICAgIHsKKyAgICB9CisKKyAg
ICBMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSosIFJlbmRlckJveCosIGNvbnN0IEludFNpemUmIG9m
ZnNldCk7CisgICAgTGF5b3V0U3RhdGUoUmVuZGVyT2JqZWN0Kik7CisKKyAgICB2b2lkIGRlc3Ry
b3koUmVuZGVyQXJlbmEqKTsKKworICAgIC8vIE92ZXJsb2FkZWQgbmV3IG9wZXJhdG9yLgorICAg
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIFJlbmRlckFyZW5hKikgdGhyb3coKTsKKworICAg
IC8vIE92ZXJyaWRkZW4gdG8gcHJldmVudCB0aGUgbm9ybWFsIGRlbGV0ZSBmcm9tIGJlaW5nIGNh
bGxlZC4KKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc2l6ZV90KTsKKworcHJpdmF0
ZToKKyAgICAvLyBUaGUgbm9ybWFsIG9wZXJhdG9yIG5ldyBpcyBkaXNhbGxvd2VkLgorICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpIHRocm93KCk7CisKK3B1YmxpYzoKKyAgICBib29sIG1f
Y2xpcHBlZDsKKyAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7CisgICAgSW50U2l6ZSBtX29mZnNldDsK
KyAgICBzdHJ1Y3QgTGF5b3V0U3RhdGUqIG1fbmV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIExheW91dFN0YXRlX2gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAJKHJldmlzaW9uIDIxMTQ5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsMTMgKzQ4OCwxMyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5CiAKICAgICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4g
JiYgcG9zQ2hpbGROZWVkc0xheW91dCgpICYmICFub3JtYWxDaGlsZE5lZWRzTGF5b3V0KCkgJiYg
IXNlbGZOZWVkc0xheW91dCgpKSB7CiAgICAgICAgIC8vIEFsbCB3ZSBoYXZlIHRvIGlzIGxheSBv
dXQgb3VyIHBvc2l0aW9uZWQgb2JqZWN0cy4KLSAgICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVj
dHMoZmFsc2UpOworICAgICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhmYWxzZSwgdHJ1ZSk7
CiAgICAgICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAgICAgIG1fbGF5ZXItPnVw
ZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogICAgICAgICBzZXROZWVkc0xheW91dChmYWxz
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBJbnRSZWN0IG9sZEJvdW5k
czsKICAgICBJbnRSZWN0IG9sZE91dGxpbmVCb3g7CiAgICAgYm9vbCBjaGVja0ZvclJlcGFpbnQg
PSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKQEAgLTUwNSw2ICs1MDUsOCBAQCB2b2lk
IFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5CiAgICAgICAgIG9sZE91dGxpbmVC
b3gubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgIH0KIAorICAgIHZpZXcoKS0+cHVz
aExheW91dFN0YXRlKHRoaXMsIEludFNpemUoeFBvcygpLCB5UG9zKCkpKTsKKwogICAgIGludCBv
bGRXaWR0aCA9IG1fd2lkdGg7CiAgICAgaW50IG9sZENvbHVtbldpZHRoID0gZGVzaXJlZENvbHVt
bldpZHRoKCk7CiAKQEAgLTYwNiw2ICs2MDgsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRC
bG9jayhib29sIHJlbGF5CiAgICAgbV9vdmVyZmxvd1dpZHRoID0gbWF4KG1fb3ZlcmZsb3dXaWR0
aCwgbV93aWR0aCk7CiAgICAgbV9vdmVyZmxvd0hlaWdodCA9IG1heChtX292ZXJmbG93SGVpZ2h0
LCBtX2hlaWdodCk7CiAKKyAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CisKICAgICAvLyBV
cGRhdGUgb3VyIHNjcm9sbCBpbmZvcm1hdGlvbiBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9s
bC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgogICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4K
ICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCkBAIC02NDAsNiArNjQ0LDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheQogICAgICAgICBpZiAoIXJlcGFpbnRSZWN0
LmlzRW1wdHkoKSAmJiB2ICYmIHYtPmZyYW1lVmlldygpKQogICAgICAgICAgICAgdi0+ZnJhbWVW
aWV3KCktPmFkZFJlcGFpbnRJbmZvKHRoaXMsIHJlcGFpbnRSZWN0KTsgLy8gV2UgbmVlZCB0byBk
byBhIHBhcnRpYWwgcmVwYWludCBvZiBvdXIgY29udGVudC4KICAgICB9CisKICAgICBzZXROZWVk
c0xheW91dChmYWxzZSk7CiB9CiAKQEAgLTEyMzgsMTEgKzEyNDMsMTUgQEAgdm9pZCBSZW5kZXJC
bG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbihibwogICAgIGhhbmRsZUJvdHRvbU9mQmxvY2sodG9w
LCBib3R0b20sIG1hcmdpbkluZm8pOwogfQogCi12b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3Np
dGlvbmVkT2JqZWN0cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCit2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGJvb2wgcHVzaExh
eW91dFN0YXRlKQogewogICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3RzKSB7CiAgICAgICAgIFJl
bmRlck9iamVjdCogcjsKICAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5kZXJP
YmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKKworICAgICAgICBpZiAocHVzaExheW91
dFN0YXRlKQorICAgICAgICAgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6
ZSh4UG9zKCksIHlQb3MoKSkpOworCiAgICAgICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkp
OyArK2l0ICkgewogICAgICAgICAgICAgLy8gV2hlbiBhIG5vbi1wb3NpdGlvbmVkIGJsb2NrIGVs
ZW1lbnQgbW92ZXMsIGl0IG1heSBoYXZlIHBvc2l0aW9uZWQgY2hpbGRyZW4gdGhhdCBhcmUgaW1w
bGljaXRseSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZQogICAgICAgICAgICAgLy8gbm9uLXBv
c2l0aW9uZWQgYmxvY2suICBSYXRoZXIgdGhhbiB0cnlpbmcgdG8gZGV0ZWN0IGFsbCBvZiB0aGVz
ZSBtb3ZlbWVudCBjYXNlcywgd2UganVzdCBhbHdheXMgbGF5IG91dCBwb3NpdGlvbmVkCkBAIC0x
MjU3LDYgKzEyNjYsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgci0+bGF5b3V0SWZOZWVkZWQoKTsK
ICAgICAgICAgfQorCisgICAgICAgIGlmIChwdXNoTGF5b3V0U3RhdGUpCisgICAgICAgICAgICB2
aWV3KCktPnBvcExheW91dFN0YXRlKCk7CiAgICAgfQogfQogCkBAIC0xMjgyLDYgKzEyOTQsOCBA
QCB2b2lkIFJlbmRlckJsb2NrOjpyZXBhaW50T3ZlcmhhbmdpbmdGbG9hCiAgICAgICAgIAogICAg
ICAgICBGbG9hdGluZ09iamVjdCogcjsKICAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRv
cjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKKworICAgICAgICB2aWV3
KCktPnN1c3BlbmRMYXlvdXRTdGF0ZSgpOwogICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVu
dCgpKTsgKytpdCkgewogICAgICAgICAgICAgLy8gT25seSByZXBhaW50IHRoZSBvYmplY3QgaWYg
aXQgaXMgb3ZlcmhhbmdpbmcsIGlzIG5vdCBpbiBpdHMgb3duIGxheWVyLCBhbmQKICAgICAgICAg
ICAgIC8vIGlzIG91ciByZXNwb25zaWJpbGl0eSB0byBwYWludCAobm9QYWludCBpc24ndCBzZXQp
LiBXaGVuIHBhaW50QWxsRGVzY2VuZGFudHMgaXMgdHJ1ZSwgdGhlIGxhdHRlcgpAQCAtMTI5MSw2
ICsxMzA1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5nRmxvYQogICAg
ICAgICAgICAgICAgIHItPm5vZGUtPnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2F0cygpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CisgICAgICAgIHZpZXcoKS0+cmVzdW1lTGF5b3V0U3RhdGUoKTsK
ICAgICB9CiB9CiAKQEAgLTM5MzgsOSArMzk1Myw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0
ZUZpcnN0TGV0dGVyKCkKICAgICB9CiAKICAgICAvLyBJZiB0aGUgY2hpbGQgZG9lcyBub3QgYWxy
ZWFkeSBoYXZlIHN0eWxlLCB3ZSBjcmVhdGUgaXQgaGVyZS4KLSAgICBpZiAoY3VyckNoaWxkLT5p
c1RleHQoKSAmJiAhY3VyckNoaWxkLT5pc0JSKCkgJiYgCi0gICAgICAgIGN1cnJDaGlsZC0+cGFy
ZW50KCktPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IFJlbmRlclN0eWxlOjpGSVJTVF9MRVRURVIp
IHsKLSAgICAgICAgCisgICAgaWYgKGN1cnJDaGlsZC0+aXNUZXh0KCkgJiYgIWN1cnJDaGlsZC0+
aXNCUigpICYmIGN1cnJDaGlsZC0+cGFyZW50KCktPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IFJl
bmRlclN0eWxlOjpGSVJTVF9MRVRURVIpIHsKKyAgICAgICAgdmlldygpLT5zdXNwZW5kTGF5b3V0
U3RhdGUoKTsKKwogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyVGV4dCo+KGN1cnJDaGlsZCk7CiAgICAgICAgIAogICAgICAgICAvLyBDcmVhdGUgb3VyIHBz
ZXVkbyBzdHlsZSBub3cgdGhhdCB3ZSBoYXZlIG91ciBmaXJzdExldHRlckNvbnRhaW5lciBkZXRl
cm1pbmVkLgpAQCAtMzk5NCw2ICs0MDA5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRmly
c3RMZXR0ZXIoKQogCiAgICAgICAgICAgICB0ZXh0T2JqLT5kZXN0cm95KCk7CiAgICAgICAgIH0K
KyAgICAgICAgdmlldygpLT5yZXN1bWVMYXlvdXRTdGF0ZSgpOwogICAgIH0KIH0KIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiAyMTE0OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7
CiAgICAgdm9pZCBsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGlu
dCYgcmVwYWludFRvcCwgaW50JiByZXBhaW50Qm90dG9tKTsKIAotICAgIHZvaWQgbGF5b3V0UG9z
aXRpb25lZE9iamVjdHMoYm9vbCByZWxheW91dENoaWxkcmVuKTsKKyAgICB2b2lkIGxheW91dFBv
c2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgYm9vbCBwdXNoTGF5b3V0U3Rh
dGUgPSBmYWxzZSk7CiAgICAgdm9pZCBpbnNlcnRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVj
dCopOwogICAgIHZvaWQgcmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUG9zaXRpb25lZE9iamVjdHMoUmVuZGVyQmxvY2sqKTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMjExNDkpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNiArNzc4LDE0IEBA
IGludCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja1dpZHRoKCkgY28KIAogYm9vbCBSZW5kZXJC
b3g6OmFic29sdXRlUG9zaXRpb24oaW50JiB4UG9zLCBpbnQmIHlQb3MsIGJvb2wgZml4ZWQpIGNv
bnN0CiB7CisgICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpIHsKKyAgICAgICAgaWYgKExh
eW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHYtPmxheW91dFN0YXRlKCkpIHsKKyAgICAgICAgICAg
IHhQb3MgPSBsYXlvdXRTdGF0ZS0+bV9vZmZzZXQud2lkdGgoKSArIG1feDsKKyAgICAgICAgICAg
IHlQb3MgPSBsYXlvdXRTdGF0ZS0+bV9vZmZzZXQuaGVpZ2h0KCkgKyBtX3k7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChzdHlsZSgpLT5wb3Np
dGlvbigpID09IEZpeGVkUG9zaXRpb24pCiAgICAgICAgIGZpeGVkID0gdHJ1ZTsKIApAQCAtOTEz
LDYgKzkyMSwxNiBAQCBJbnRSZWN0IFJlbmRlckJveDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsCiAK
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByZWN0
LCBib29sIGZpeGVkKQogeworICAgIGlmIChSZW5kZXJWaWV3KiB2ID0gdmlldygpKSB7CisgICAg
ICAgIGlmIChMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2LT5sYXlvdXRTdGF0ZSgpKSB7Cisg
ICAgICAgICAgICByZWN0Lm1vdmUobV94LCBtX3kpOworICAgICAgICAgICAgcmVjdC5tb3ZlKGxh
eW91dFN0YXRlLT5tX29mZnNldCk7CisgICAgICAgICAgICBpZiAobGF5b3V0U3RhdGUtPm1fY2xp
cHBlZCkKKyAgICAgICAgICAgICAgICByZWN0LmludGVyc2VjdChsYXlvdXRTdGF0ZS0+bV9jbGlw
UmVjdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpbnQg
eCA9IHJlY3QueCgpICsgbV94OwogICAgIGludCB5ID0gcmVjdC55KCkgKyBtX3k7CiAKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiAyMTE0OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDggQEAgcHVibGljOgog
ICAgIGludCByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBS
ZW5kZXJMYXllciogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9CisgICAgLy8gRmFz
dCBub24tdmlydHVhbCBhY2Nlc3NvcgorICAgIFJlbmRlckxheWVyKiBib3hMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fbGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgSW50UmVjdCBjYXJldFJlY3QoaW50
IG9mZnNldCwgRUFmZmluaXR5ID0gVVBTVFJFQU0sIGludCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
ID0gMCk7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcAkocmV2aXNp
b24gMjExNDkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODEsMTIgKzQ4MSwxNiBAQCB2b2lkIFJlbmRlckNvbnRhaW5lcjo6bGF5
b3V0KCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CiAKKyAgICB2aWV3KCktPnB1c2hM
YXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CisKICAgICBSZW5kZXJPYmplY3Qq
IGNoaWxkID0gbV9maXJzdENoaWxkOwogICAgIHdoaWxlIChjaGlsZCkgewogICAgICAgICBjaGls
ZC0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgQVNTRVJUKGNoaWxkLT5pc1JlbmRlcklubGlu
ZSgpIHx8ICFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7CiAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCk7CiAgICAgfQorCisgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOwogICAg
IHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAkocmV2aXNpb24gMjExNDkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2
b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sCiAKICAgICBpZiAoIXJlbGF5
b3V0Q2hpbGRyZW4gJiYgcG9zQ2hpbGROZWVkc0xheW91dCgpICYmICFub3JtYWxDaGlsZE5lZWRz
TGF5b3V0KCkgJiYgIXNlbGZOZWVkc0xheW91dCgpKSB7CiAgICAgICAgIC8vIEFsbCB3ZSBoYXZl
IHRvIGlzIGxheSBvdXQgb3VyIHBvc2l0aW9uZWQgb2JqZWN0cy4KLSAgICAgICAgbGF5b3V0UG9z
aXRpb25lZE9iamVjdHMoZmFsc2UpOworICAgICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhm
YWxzZSwgdHJ1ZSk7CiAgICAgICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAgICAg
IG1fbGF5ZXItPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogICAgICAgICBzZXROZWVk
c0xheW91dChmYWxzZSk7CkBAIC0yMjcsNiArMjI3LDggQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJv
eDo6bGF5b3V0QmxvY2soYm9vbAogICAgICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5s
YXlvdXREZWx0YSgpKTsKICAgICB9CiAKKyAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlz
LCBJbnRTaXplKG1feCwgbV95KSk7CisKICAgICBpbnQgcHJldmlvdXNXaWR0aCA9IG1fd2lkdGg7
CiAgICAgaW50IHByZXZpb3VzSGVpZ2h0ID0gbV9oZWlnaHQ7CiAgICAgCkBAIC0yOTQsNiArMjk2
LDggQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbAogICAgIGlmICht
X292ZXJmbG93V2lkdGggPCBtX3dpZHRoKQogICAgICAgICBtX292ZXJmbG93V2lkdGggPSBtX3dp
ZHRoOwogCisgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOworCiAgICAgLy8gVXBkYXRlIG91
ciBzY3JvbGxiYXJzIGlmIHdlJ3JlIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBub3cgdGhh
dCB3ZSBrbm93IGlmCiAgICAgLy8gd2Ugb3ZlcmZsb3cgb3Igbm90LgogICAgIGlmIChoYXNPdmVy
Zmxvd0NsaXAoKSkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuY3BwCShyZXZpc2lvbiAyMTE0
OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NTAsNiArNDUwLDkgQEAgYm9vbCBSZW5kZXJGbG93OjpoaXRUZXN0TGluZXMoY29uc3QgSGl0
VAogSW50UmVjdCBSZW5kZXJGbG93OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQogewog
ICAgIGlmIChpc0lubGluZUZsb3coKSkgeworICAgICAgICAvLyBPbmx5IGNvbXBhY3RzIGFuZCBy
dW4taW5zIGFyZSBhbGxvd2VkIGluIGhlcmUgZHVyaW5nIGxheW91dC4KKyAgICAgICAgQVNTRVJU
KCF2aWV3KCkgfHwgIXZpZXcoKS0+bGF5b3V0U3RhdGUoKSB8fCBpc0NvbXBhY3QoKSB8fCBpc1J1
bkluKCkpOworCiAgICAgICAgIGlmICghZmlyc3RMaW5lQm94KCkpCiAgICAgICAgICAgICByZXR1
cm4gSW50UmVjdCgpOwogCkBAIC00ODUsOCArNDg4LDggQEAgSW50UmVjdCBSZW5kZXJGbG93Ojph
YnNvbHV0ZUNsaXBwZWRPdmVyZgogICAgICAgICAgICAgLy8gYW55d2F5IGlmIGl0cyBzaXplIGRv
ZXMgY2hhbmdlLgogICAgICAgICAgICAgaW50IHggPSByLngoKTsKICAgICAgICAgICAgIGludCB5
ID0gci55KCk7Ci0gICAgICAgICAgICBJbnRSZWN0IGJveFJlY3QoMCwgMCwgY2ItPmxheWVyKCkt
PndpZHRoKCksIGNiLT5sYXllcigpLT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBjYi0+bGF5ZXIo
KS0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeCwgeSk7IC8vIEZvciBvdmVyZmxvdzphdXRvL3Njcm9s
bC9oaWRkZW4uCisgICAgICAgICAgICBJbnRSZWN0IGJveFJlY3QoMCwgMCwgY2ItPmJveExheWVy
KCktPndpZHRoKCksIGNiLT5ib3hMYXllcigpLT5oZWlnaHQoKSk7CisgICAgICAgICAgICBjYi0+
Ym94TGF5ZXIoKS0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeCwgeSk7IC8vIEZvciBvdmVyZmxvdzph
dXRvL3Njcm9sbC9oaWRkZW4uCiAgICAgICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KHgsIHks
IHIud2lkdGgoKSwgci5oZWlnaHQoKSk7CiAgICAgICAgICAgICByID0gaW50ZXJzZWN0aW9uKHJl
cGFpbnRSZWN0LCBib3hSZWN0KTsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDIxMTQ5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2
LDggQEAgdm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0OjpsYXlvdXQoKQogewogICAgIEFTU0VSVChu
ZWVkc0xheW91dCgpKTsKIAorICAgIHZpZXcoKS0+c3VzcGVuZExheW91dFN0YXRlKCk7CisKICAg
ICBJbnRSZWN0IG9sZEJvdW5kczsKICAgICBJbnRSZWN0IG9sZE91dGxpbmVCb3g7CiAgICAgYm9v
bCBjaGVja0ZvclJlcGFpbnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKQEAgLTEw
MSw2ICsxMDMsNyBAQCB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OmxheW91dCgpCiAgICAgaWYg
KGNoZWNrRm9yUmVwYWludCkKICAgICAgICAgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQob2xk
Qm91bmRzLCBvbGRPdXRsaW5lQm94KTsKIAorICAgIHZpZXcoKS0+cmVzdW1lTGF5b3V0U3RhdGUo
KTsKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAJKHJldmlzaW9uIDIxMTQ5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksMTEgKzE5OSwxNSBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhiCiAgICAgdXBkYXRlVmlzaWJpbGl0eVN0YXR1
cygpOwogICAgICAgICAKICAgICBpZiAobV9oYXNWaXNpYmxlQ29udGVudCkgeworICAgICAgICBS
ZW5kZXJWaWV3KiB2aWV3ID0gbV9vYmplY3QtPnZpZXcoKTsKKyAgICAgICAgQVNTRVJUKHZpZXcp
OworICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgdXNpbmcgTGF5dW90U3RhdGUgYW5kIHJlbW92
ZSB0aGUgc3VzcGVuZExheW91dFN0YXRlKCkgY2FsbAorICAgICAgICAvLyBmcm9tIHVwZGF0ZVNj
cm9sbEluZm9BZnRlckxheW91dCgpLgorICAgICAgICBBU1NFUlQoIXZpZXctPmxheW91dFN0YXRl
KCkpOworCiAgICAgICAgIEludFJlY3QgbmV3UmVjdCA9IG1fb2JqZWN0LT5hYnNvbHV0ZUNsaXBw
ZWRPdmVyZmxvd1JlY3QoKTsKICAgICAgICAgSW50UmVjdCBuZXdPdXRsaW5lQm94ID0gbV9vYmpl
Y3QtPmFic29sdXRlT3V0bGluZUJveCgpOwogICAgICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KSB7
Ci0gICAgICAgICAgICBSZW5kZXJWaWV3KiB2aWV3ID0gbV9vYmplY3QtPnZpZXcoKTsKLSAgICAg
ICAgICAgIEFTU0VSVCh2aWV3KTsKICAgICAgICAgICAgIGlmICh2aWV3ICYmICF2aWV3LT5wcmlu
dGluZygpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBkaWRNb3ZlID0gbmV3T3V0bGluZUJveC5s
b2NhdGlvbigpICE9IG1fb3V0bGluZUJveC5sb2NhdGlvbigpOwogICAgICAgICAgICAgICAgIGlm
ICghZGlkTW92ZSAmJiAhbV9yZXBhaW50T3ZlcmZsb3dPblJlc2l6ZSkKQEAgLTExODMsOCArMTE4
NywxNyBAQCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0CiAgICAgICAg
IC8vIHRvIHB1bGwgb3VyIHNjcm9sbCBvZmZzZXRzIGJhY2sgdG8gdGhlIG1heCAob3IgcHVzaCB0
aGVtIHVwIHRvIHRoZSBtaW4pLgogICAgICAgICBpbnQgbmV3WCA9IG1heCgwLCBtaW4oc2Nyb2xs
WE9mZnNldCgpLCBzY3JvbGxXaWR0aCgpIC0gbV9vYmplY3QtPmNsaWVudFdpZHRoKCkpKTsKICAg
ICAgICAgaW50IG5ld1kgPSBtYXgoMCwgbWluKG1fc2Nyb2xsWSwgc2Nyb2xsSGVpZ2h0KCkgLSBt
X29iamVjdC0+Y2xpZW50SGVpZ2h0KCkpKTsKLSAgICAgICAgaWYgKG5ld1ggIT0gc2Nyb2xsWE9m
ZnNldCgpIHx8IG5ld1kgIT0gbV9zY3JvbGxZKQorICAgICAgICBpZiAobmV3WCAhPSBzY3JvbGxY
T2Zmc2V0KCkgfHwgbmV3WSAhPSBtX3Njcm9sbFkpIHsKKyAgICAgICAgICAgIFJlbmRlclZpZXcq
IHZpZXcgPSBtX29iamVjdC0+dmlldygpOworICAgICAgICAgICAgQVNTRVJUKHZpZXcpOworICAg
ICAgICAgICAgLy8gc2Nyb2xsVG9PZmZzZXQoKSBtYXkgY2FsbCB1cGRhdGVMYXllclBvc2l0aW9u
cygpLCB3aGljaCBkb2Vzbid0IHdvcmsKKyAgICAgICAgICAgIC8vIHdpdGggTGF5b3V0U3RhdGUu
CisgICAgICAgICAgICBpZiAodmlldykKKyAgICAgICAgICAgICAgICB2aWV3LT5zdXNwZW5kTGF5
b3V0U3RhdGUoKTsKICAgICAgICAgICAgIHNjcm9sbFRvT2Zmc2V0KG5ld1gsIG5ld1kpOworICAg
ICAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICAgICAgdmlldy0+cmVzdW1lTGF5b3V0U3Rh
dGUoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgaGF2ZUhvcml6b250YWxCYXIgPSBt
X2hCYXI7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCShyZXZpc2lvbiAy
MTE0OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxPTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCisjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0yMDAsNiAr
MjAxLDcgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6dXBkYXRlTWFya2VyTG9jYXRpbwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1hcmtlclBhciAhPSBsaW5lQm94UGFyZW50IHx8IG1fbWFya2Vy
LT5wcmVmV2lkdGhzRGlydHkoKSkgeworICAgICAgICAgICAgdmlldygpLT5zdXNwZW5kTGF5b3V0
U3RhdGUoKTsKICAgICAgICAgICAgIHVwZGF0ZUZpcnN0TGV0dGVyKCk7CiAgICAgICAgICAgICBt
X21hcmtlci0+cmVtb3ZlKCk7CiAgICAgICAgICAgICBpZiAoIWxpbmVCb3hQYXJlbnQpCkBAIC0y
MDcsNiArMjA5LDcgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6dXBkYXRlTWFya2VyTG9jYXRpbwog
ICAgICAgICAgICAgbGluZUJveFBhcmVudC0+YWRkQ2hpbGQobV9tYXJrZXIsIGZpcnN0Tm9uTWFy
a2VyQ2hpbGQobGluZUJveFBhcmVudCkpOwogICAgICAgICAgICAgaWYgKG1fbWFya2VyLT5wcmVm
V2lkdGhzRGlydHkoKSkKICAgICAgICAgICAgICAgICBtX21hcmtlci0+Y2FsY1ByZWZXaWR0aHMo
KTsKKyAgICAgICAgICAgIHZpZXcoKS0+cmVzdW1lTGF5b3V0U3RhdGUoKTsKICAgICAgICAgfQog
ICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCShyZXZp
c2lvbiAyMTE0OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04ODEsNyArODgxLDcgQEAgSW50UmVjdCBSZW5kZXJMaXN0TWFya2Vy
OjpzZWxlY3Rpb25SZWN0KAogICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygp
OwogICAgIGNiLT5hYnNvbHV0ZVBvc2l0aW9uKGFic3gsIGFic3kpOwogICAgIGlmIChjYi0+aGFz
T3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgIGNiLT5sYXllcigpLT5zdWJ0cmFjdFNjcm9sbE9mZnNl
dChhYnN4LCBhYnN5KTsKKyAgICAgICAgY2ItPmJveExheWVyKCktPnN1YnRyYWN0U2Nyb2xsT2Zm
c2V0KGFic3gsIGFic3kpOwogCiAgICAgUm9vdElubGluZUJveCogcm9vdCA9IGlubGluZUJveFdy
YXBwZXIoKS0+cm9vdCgpOwogICAgIHJldHVybiBJbnRSZWN0KGFic3ggKyB4UG9zKCksIGFic3kg
KyByb290LT5zZWxlY3Rpb25Ub3AoKSwgd2lkdGgoKSwgcm9vdC0+c2VsZWN0aW9uSGVpZ2h0KCkp
OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMTE0OSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
OTMsNyArMTg5Myw3IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUNsaXBwZWRPdmUK
IHZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiBy
LCBib29sIGYpCiB7CiAgICAgaWYgKHBhcmVudCgpKQotICAgICAgICByZXR1cm4gcGFyZW50KCkt
PmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOworICAgICAgICBwYXJlbnQoKS0+Y29t
cHV0ZUFic29sdXRlUmVwYWludFJlY3QociwgZik7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0Ojpk
aXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkKQpAQCAtMjQyMSw4
ICsyNDIxLDEyIEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoKSAKICAg
ICAvLyB0aGUgbGF5b3V0IG9mIHRoZSBwb3NpdGlvbmVkIG9iamVjdC4gIFRoaXMgZG9lcyBtZWFu
IHRoYXQgY2FsY0Fic29sdXRlSG9yaXpvbnRhbCBhbmQKICAgICAvLyBjYWxjQWJzb2x1dGVWZXJ0
aWNhbCBoYXZlIHRvIHVzZSBjb250YWluZXIoKS4KICAgICBSZW5kZXJPYmplY3QqIG8gPSBwYXJl
bnQoKTsKKworICAgIGlmIChpc1RleHQoKSkKKyAgICAgICAgcmV0dXJuIG87CisKICAgICBFUG9z
aXRpb24gcG9zID0gbV9zdHlsZS0+cG9zaXRpb24oKTsKLSAgICBpZiAoIWlzVGV4dCgpICYmIHBv
cyA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAgaWYgKHBvcyA9PSBGaXhlZFBvc2l0aW9uKSB7CiAg
ICAgICAgIC8vIGNvbnRhaW5lcigpIGNhbiBiZSBjYWxsZWQgb24gYW4gb2JqZWN0IHRoYXQgaXMg
bm90IGluIHRoZQogICAgICAgICAvLyB0cmVlIHlldC4gIFdlIGRvbid0IGNhbGwgdmlldygpIHNp
bmNlIGl0IHdpbGwgYXNzZXJ0IGlmIGl0CiAgICAgICAgIC8vIGNhbid0IGdldCBiYWNrIHRvIHRo
ZSBjYW52YXMuICBJbnN0ZWFkIHdlIGp1c3Qgd2FsayBhcyBoaWdoIHVwCkBAIC0yNDMxLDcgKzI0
MzUsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKCkgCiAgICAgICAg
IC8vIHdlJ2xsIGp1c3QgcmV0dXJuIDApLgogICAgICAgICB3aGlsZSAobyAmJiBvLT5wYXJlbnQo
KSkKICAgICAgICAgICAgIG8gPSBvLT5wYXJlbnQoKTsKLSAgICB9IGVsc2UgaWYgKCFpc1RleHQo
KSAmJiBwb3MgPT0gQWJzb2x1dGVQb3NpdGlvbikgeworICAgIH0gZWxzZSBpZiAocG9zID09IEFi
c29sdXRlUG9zaXRpb24pIHsKICAgICAgICAgLy8gU2FtZSBnb2VzIGhlcmUuICBXZSB0ZWNobmlj
YWxseSBqdXN0IHdhbnQgb3VyIGNvbnRhaW5pbmcgYmxvY2ssIGJ1dAogICAgICAgICAvLyB3ZSBt
YXkgbm90IGhhdmUgb25lIGlmIHdlJ3JlIHBhcnQgb2YgYW4gdW5pbnN0YWxsZWQgc3VidHJlZS4g
IFdlJ2xsCiAgICAgICAgIC8vIGNsaW1iIGFzIGhpZ2ggYXMgd2UgY2FuIHRob3VnaC4KQEAgLTI3
MTYsNyArMjcyMCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzY2hlZHVsZVJlbGF5b3V0KCkKICAg
ICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVmlldyo+KHRoaXMpLT5m
cmFtZVZpZXcoKTsKICAgICAgICAgaWYgKHZpZXcpCiAgICAgICAgICAgICB2aWV3LT5zY2hlZHVs
ZVJlbGF5b3V0KCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKHBhcmVudCgpKSB7CiAg
ICAgICAgIEZyYW1lVmlldyogdiA9IHZpZXcoKSA/IHZpZXcoKS0+ZnJhbWVWaWV3KCkgOiAwOwog
ICAgICAgICBpZiAodikKICAgICAgICAgICAgIHYtPnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUo
bm9kZSgpKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9u
IDIxMTQ5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgSW50UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0
aW9uUmVjdCgpCiAgICAgaW50IGFic3gsIGFic3k7CiAgICAgY2ItPmFic29sdXRlUG9zaXRpb25G
b3JDb250ZW50KGFic3gsIGFic3kpOwogICAgIGlmIChjYi0+aGFzT3ZlcmZsb3dDbGlwKCkpCi0g
ICAgICAgIGNiLT5sYXllcigpLT5zdWJ0cmFjdFNjcm9sbE9mZnNldChhYnN4LCBhYnN5KTsKKyAg
ICAgICAgY2ItPmJveExheWVyKCktPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KGFic3gsIGFic3kpOwog
CiAgICAgcmV0dXJuIEludFJlY3Qoc2VsZWN0aW9uTGVmdCArIGFic3gsIHNlbGVjdGlvblRvcCAr
IGFic3ksIHNlbGVjdGlvblJpZ2h0IC0gc2VsZWN0aW9uTGVmdCwgc2VsZWN0aW9uSGVpZ2h0KTsK
IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNp
b24gMjExNDkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFp
bmVyLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHTWFya2VyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlQ2xpcHBlci5oIgpAQCAtOTEsNiArOTIsOCBAQCB2
b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIAogICAgIGNhbGNWaWV3cG9ydCgpOwog
CisgICAgdmlldygpLT5zdXNwZW5kTGF5b3V0U3RhdGUoKTsKKwogICAgIEludFJlY3Qgb2xkQm91
bmRzOwogICAgIEludFJlY3Qgb2xkT3V0bGluZUJveDsKICAgICBib29sIGNoZWNrRm9yUmVwYWlu
dCA9IGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpOwpAQCAtMTE3LDYgKzEyMCw3IEBAIHZv
aWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogICAgIGlmIChzZWxmTmVlZHNMYXlvdXQo
KSAmJiBjaGVja0ZvclJlcGFpbnQpCiAgICAgICAgIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVk
KG9sZEJvdW5kcywgb2xkT3V0bGluZUJveCk7CiAKKyAgICB2aWV3KCktPnJlc3VtZUxheW91dFN0
YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gMjExNDkpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHls
ZS5oIgogI2luY2x1ZGUgIlBvaW50ZXJFdmVudHNIaXRSdWxlcy5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0
LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEVsZW1lbnQuaCIKQEAgLTU5LDYgKzYwLDcgQEAgdm9pZCBS
ZW5kZXJTVkdUZXh0OjpsYXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKIAor
ICAgIHZpZXcoKS0+c3VzcGVuZExheW91dFN0YXRlKCk7CiAgICAgSW50UmVjdCBvbGRCb3VuZHM7
CiAgICAgSW50UmVjdCBvbGRPdXRsaW5lQm94OwogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0g
Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7CkBAIC04MSw2ICs4Myw3IEBAIHZvaWQgUmVu
ZGVyU1ZHVGV4dDo6bGF5b3V0KCkKICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQogICAgICAgICBy
ZXBhaW50ZWQgPSByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChvbGRCb3VuZHMsIG9sZE91dGxp
bmVCb3gpOwogICAgIAorICAgIHZpZXcoKS0+cmVzdW1lTGF5b3V0U3RhdGUoKTsKICAgICBzZXRO
ZWVkc0xheW91dChmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJ
KHJldmlzaW9uIDIxMTQ5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRml4ZWRUYWJsZUxheW91
dC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGFibGVDb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIK
QEAgLTI2Nyw3ICsyNjgsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogCiAgICAgaWYg
KHBvc0NoaWxkTmVlZHNMYXlvdXQoKSAmJiAhbm9ybWFsQ2hpbGROZWVkc0xheW91dCgpICYmICFz
ZWxmTmVlZHNMYXlvdXQoKSkgewogICAgICAgICAvLyBBbGwgd2UgaGF2ZSB0byBkbyBpcyBsYXkg
b3V0IG91ciBwb3NpdGlvbmVkIG9iamVjdHMuCi0gICAgICAgIGxheW91dFBvc2l0aW9uZWRPYmpl
Y3RzKGZhbHNlKTsKKyAgICAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMoZmFsc2UsIHRydWUp
OwogICAgICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yODQsNiArMjg1LDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICAgICAg
b2xkT3V0bGluZUJveC5tb3ZlKHZpZXcoKS0+bGF5b3V0RGVsdGEoKSk7CiAgICAgfQogICAgIAor
ICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94LCBtX3kpKTsKKwog
ICAgIG1faGVpZ2h0ID0gMDsKICAgICBtX292ZXJmbG93SGVpZ2h0ID0gMDsKICAgICBtX292ZXJm
bG93VG9wID0gMDsKQEAgLTQyNCw2ICs0MjcsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQo
KQogICAgIC8vIEZJWE1FOiBPbmx5IHBhc3MgdHJ1ZSBpZiB3aWR0aCBvciBoZWlnaHQgY2hhbmdl
ZC4KICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyh0cnVlKTsKIAorICAgIHZpZXcoKS0+cG9w
TGF5b3V0U3RhdGUoKTsKKwogICAgIGJvb2wgZGlkRnVsbFJlcGFpbnQgPSB0cnVlOwogICAgIC8v
IFJlcGFpbnQgd2l0aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSBv
dXIgb2xkIGJvdW5kcy4KICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAyMTE0OSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE4
NCwxNSArMTg1LDIwIEBAIEludFJlY3QgUmVuZGVyVGFibGVDZWxsOjphYnNvbHV0ZUNsaXBwZWQK
IHZvaWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0
JiByLCBib29sIGZpeGVkKQogewogICAgIHIuc2V0WShyLnkoKSArIG1fdG9wRXh0cmEpOwotICAg
IHIubW92ZSgtcGFyZW50KCktPnhQb3MoKSwgLXBhcmVudCgpLT55UG9zKCkpOyAvLyBSb3dzIGFy
ZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHNwYWNlLCBzbyBkb24ndCBhZGQgdGhlaXIgb2Zmc2V0
IGluLgorICAgIFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7CisgICAgaWYgKCF2IHx8ICF2LT5sYXlv
dXRTdGF0ZSgpKQorICAgICAgICByLm1vdmUoLXBhcmVudCgpLT54UG9zKCksIC1wYXJlbnQoKS0+
eVBvcygpKTsgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwgc28gZG9u
J3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KICAgICBSZW5kZXJCbG9jazo6Y29tcHV0ZUFic29sdXRl
UmVwYWludFJlY3QociwgZml4ZWQpOwogfQogCiBib29sIFJlbmRlclRhYmxlQ2VsbDo6YWJzb2x1
dGVQb3NpdGlvbihpbnQmIHhQb3MsIGludCYgeVBvcywgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAg
ICBib29sIHJlc3VsdCA9IFJlbmRlckJsb2NrOjphYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3Ms
IGZpeGVkKTsKLSAgICB4UG9zIC09IHBhcmVudCgpLT54UG9zKCk7IC8vIFJvd3MgYXJlIGluIHRo
ZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UsIHNvIGRvbid0IGFkZCB0aGVpciBvZmZzZXQgaW4uCi0g
ICAgeVBvcyAtPSBwYXJlbnQoKS0+eVBvcygpOworICAgIFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7
CisgICAgaWYgKCF2IHx8ICF2LT5sYXlvdXRTdGF0ZSgpKSB7CisgICAgICAgIHhQb3MgLT0gcGFy
ZW50KCktPnhQb3MoKTsgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwg
c28gZG9uJ3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KKyAgICAgICAgeVBvcyAtPSBwYXJlbnQoKS0+
eVBvcygpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiAyMTE0OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOSBAQAog
I2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
clRhYmxlQ2VsbC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMTMsNiArMTE1LDkgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6bGF5b3V0KCkK
IHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CiAKKyAgICAvLyBUYWJsZSByb3dzIGRvIG5v
dCBhZGQgdHJhbnNsYXRpb24uCisgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50
U2l6ZSgpKTsKKwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxk
LT5pc1RhYmxlQ2VsbCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUYWJsZUNlbGwqPihjaGlsZCk7CkBAIC0xMjIsNiArMTI3LDggQEAg
dm9pZCBSZW5kZXJUYWJsZVJvdzo6bGF5b3V0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KKworICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKICAgICBzZXROZWVkc0xheW91
dChmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAkocmV2aXNpb24gMjExNDkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDb2wuaCIKICNpbmNsdWRlICJS
ZW5kZXJUYWJsZVJvdy5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTI2Myw2ICsyNjQsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbChSZW5kZXJU
CiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c2V0Q2VsbFdpZHRocygpCiB7CiAgICAgVmVjdG9y
PGludD4mIGNvbHVtblBvcyA9IHRhYmxlKCktPmNvbHVtblBvc2l0aW9ucygpOworICAgIGJvb2wg
cHVzaGVkTGF5b3V0U3RhdGUgPSBmYWxzZTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9n
cmlkUm93czsgaSsrKSB7CiAgICAgICAgIFJvdyYgcm93ID0gKm1fZ3JpZFtpXS5yb3c7CkBAIC0y
ODMsMTIgKzI4NSwyMiBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c2V0Q2VsbFdpZHRocygp
CiAgICAgICAgICAgICBpbnQgb2xkV2lkdGggPSBjZWxsLT53aWR0aCgpOwogICAgICAgICAgICAg
aWYgKHcgIT0gb2xkV2lkdGgpIHsKICAgICAgICAgICAgICAgICBjZWxsLT5zZXROZWVkc0xheW91
dCh0cnVlKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRhYmxlKCktPnNlbGZOZWVkc0xheW91dCgp
ICYmIGNlbGwtPmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKQorICAgICAgICAgICAgICAg
IGlmICghdGFibGUoKS0+c2VsZk5lZWRzTGF5b3V0KCkgJiYgY2VsbC0+Y2hlY2tGb3JSZXBhaW50
RHVyaW5nTGF5b3V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwdXNoZWRMYXlvdXRT
dGF0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGVjaG5pY2FsbHksIHdlIHNob3Vs
ZCBhbHNvIHB1c2ggc3RhdGUgZm9yIHRoZSByb3csIGJ1dCBzaW5jZQorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcm93cyBkb24ndCBwdXNoIGEgY29vcmRpbmF0ZSB0cmFuc2Zvcm0sIHRoYXQn
cyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICAgICAgdmlldygpLT5wdXNoTGF5
b3V0U3RhdGUodGhpcywgSW50U2l6ZShtX3gsIG1feSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaGVkTGF5b3V0U3RhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGNlbGwtPnJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgY2VsbC0+c2V0V2lkdGgodyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CisgICAgCisgICAgaWYgKHB1c2hlZExheW91dFN0YXRlKQorICAgICAgICB2aWV3KCkt
PnBvcExheW91dFN0YXRlKCk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93
SGVpZ2h0KCkKQEAgLTI5Niw2ICszMDgsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6Y2Fs
Y1Jvd0hlaWdodCgpCiAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsOwogCiAgICAgaW50IHNwYWNp
bmcgPSB0YWJsZSgpLT52Qm9yZGVyU3BhY2luZygpOworICAgIGJvb2wgcHVzaGVkTGF5b3V0U3Rh
dGUgPSBmYWxzZTsKIAogICAgIG1fcm93UG9zLnJlc2l6ZShtX2dyaWRSb3dzICsgMSk7CiAgICAg
bV9yb3dQb3NbMF0gPSBzcGFjaW5nOwpAQCAtMzI0LDYgKzMzNywxMiBAQCB2b2lkIFJlbmRlclRh
YmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCiAgICAgICAgICAgICBpbnQgaW5keCA9IG1heChy
IC0gY2VsbC0+cm93U3BhbigpICsgMSwgMCk7CiAKICAgICAgICAgICAgIGlmIChjZWxsLT5vdmVy
cmlkZVNpemUoKSAhPSAtMSkgeworICAgICAgICAgICAgICAgIGlmICghcHVzaGVkTGF5b3V0U3Rh
dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVjaG5pY2FsbHksIHdlIHNob3VsZCBhbHNv
IHB1c2ggc3RhdGUgZm9yIHRoZSByb3csIGJ1dCBzaW5jZQorICAgICAgICAgICAgICAgICAgICAv
LyByb3dzIGRvbid0IHB1c2ggYSBjb29yZGluYXRlIHRyYW5zZm9ybSwgdGhhdCdzIG5vdCBuZWNl
c3NhcnkuCisgICAgICAgICAgICAgICAgICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMs
IEludFNpemUobV94LCBtX3kpKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaGVkTGF5b3V0U3Rh
dGUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjZWxsLT5zZXRP
dmVycmlkZVNpemUoLTEpOwogICAgICAgICAgICAgICAgIGNlbGwtPnNldENoaWxkTmVlZHNMYXlv
dXQodHJ1ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGNlbGwtPmxheW91dElmTmVlZGVkKCk7
CkBAIC0zNjAsNiArMzc5LDkgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dIZWln
aHQoKQogCiAgICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bvc1tyICsgMV0sIG1f
cm93UG9zW3JdKTsKICAgICB9CisKKyAgICBpZiAocHVzaGVkTGF5b3V0U3RhdGUpCisgICAgICAg
IHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKIH0KIAogaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6
bGF5b3V0Um93cyhpbnQgdG9BZGQpCkBAIC00NDIsNiArNDY0LDggQEAgaW50IFJlbmRlclRhYmxl
U2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdAogICAgIGludCB2c3BhY2luZyA9IHRhYmxlKCktPnZC
b3JkZXJTcGFjaW5nKCk7CiAgICAgaW50IG5FZmZDb2xzID0gdGFibGUoKS0+bnVtRWZmQ29scygp
OwogCisgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6ZShtX3gsIG1feSkp
OworCiAgICAgZm9yIChpbnQgciA9IDA7IHIgPCB0b3RhbFJvd3M7IHIrKykgewogICAgICAgICAv
LyBTZXQgdGhlIHJvdydzIHgveSBwb3NpdGlvbiBhbmQgd2lkdGgvaGVpZ2h0LgogICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByb3dSZW5kZXJlciA9IG1fZ3JpZFtyXS5yb3dSZW5kZXJlcikgewpA
QCAtNTUxLDYgKzU3NSw4IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50
IHQKICAgICAgICAgfQogICAgIH0KIAorICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKwog
ICAgIG1faGVpZ2h0ID0gbV9yb3dQb3NbdG90YWxSb3dzXTsKICAgICBtX292ZXJmbG93SGVpZ2h0
ID0gbWF4KG1fb3ZlcmZsb3dIZWlnaHQsIG1faGVpZ2h0KTsKICAgICByZXR1cm4gbV9oZWlnaHQ7
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gMjExNDkpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw4ICsx
MDY0LDggQEAgSW50UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0KCkKICAgICBpZiAoY2It
Pmhhc092ZXJmbG93Q2xpcCgpKSB7CiAgICAgICAgIGludCB4ID0gcmVjdC54KCk7CiAgICAgICAg
IGludCB5ID0gcmVjdC55KCk7Ci0gICAgICAgIEludFJlY3QgYm94UmVjdCgwLCAwLCBjYi0+bGF5
ZXIoKS0+d2lkdGgoKSwgY2ItPmxheWVyKCktPmhlaWdodCgpKTsKLSAgICAgICAgY2ItPmxheWVy
KCktPnN1YnRyYWN0U2Nyb2xsT2Zmc2V0KHgsIHkpOworICAgICAgICBJbnRSZWN0IGJveFJlY3Qo
MCwgMCwgY2ItPmJveExheWVyKCktPndpZHRoKCksIGNiLT5ib3hMYXllcigpLT5oZWlnaHQoKSk7
CisgICAgICAgIGNiLT5ib3hMYXllcigpLT5zdWJ0cmFjdFNjcm9sbE9mZnNldCh4LCB5KTsKICAg
ICAgICAgSW50UmVjdCByZXBhaW50UmVjdCh4LCB5LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCkpOwogICAgICAgICByZWN0ID0gaW50ZXJzZWN0aW9uKHJlcGFpbnRSZWN0LCBib3hSZWN0KTsK
ICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gMjExNDkpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsOCBAQCBSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KE5vZGUqIG5vZGUsIEZyYW1lCiAgICAg
LCBtX3NlbGVjdGlvbkVuZFBvcygtMSkKICAgICAsIG1fcHJpbnRJbWFnZXModHJ1ZSkKICAgICAs
IG1fbWF4aW1hbE91dGxpbmVTaXplKDApCisgICAgLCBtX2xheW91dFN0YXRlKDApCisgICAgLCBt
X2xheW91dFN0YXRlU3VzcGVuZENvdW50KDApCiB7CiAgICAgLy8gQ2xlYXIgb3VyIGFub255bW91
cyBiaXQsIHNldCBiZWNhdXNlIFJlbmRlck9iamVjdCBhc3N1bWVzCiAgICAgLy8gYW55IHJlbmRl
cmVyIHdpdGggZG9jdW1lbnQgYXMgdGhlIG5vZGUgaXMgYW5vbnltb3VzLgpAQCAtOTksNiArMTAx
LDExIEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBpZiAocmVsYXlvdXRDaGlsZHJl
bikKICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CiAgICAgCisgICAg
QVNTRVJUKCFtX2xheW91dFN0YXRlKTsKKyAgICBMYXlvdXRTdGF0ZSBzdGF0ZTsKKyAgICBzdGF0
ZS5tX2NsaXBwZWQgPSBmYWxzZTsKKyAgICBtX2xheW91dFN0YXRlID0gJnN0YXRlOworCiAgICAg
aWYgKG5lZWRzTGF5b3V0KCkpCiAgICAgICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKIApAQCAt
MTA5LDYgKzExNiw4IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBzZXRPdmVyZmxv
d1dpZHRoKGRvY1dpZHRoKCkpOwogICAgIHNldE92ZXJmbG93SGVpZ2h0KGRvY0hlaWdodCgpKTsK
IAorICAgIEFTU0VSVChtX2xheW91dFN0YXRlID09ICZzdGF0ZSk7CisgICAgbV9sYXlvdXRTdGF0
ZSA9IDA7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkBAIC01MjQsNCArNTMzLDEz
IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0QmVzdFRydW5jYXRlZEF0KGludCAKICAgICB9CiB9CiAK
K3ZvaWQgUmVuZGVyVmlldzo6cHVzaExheW91dFN0YXRlKFJlbmRlck9iamVjdCogcm9vdCkKK3sK
KyAgICBBU1NFUlQoIW1fZnJhbWVWaWV3LT5uZWVkc0Z1bGxSZXBhaW50KCkpOworICAgIEFTU0VS
VChtX2xheW91dFN0YXRlU3VzcGVuZENvdW50ID09IDApOworICAgIEFTU0VSVChtX2xheW91dFN0
YXRlID09IDApOworCisgICAgbV9sYXlvdXRTdGF0ZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgTGF5
b3V0U3RhdGUocm9vdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDIxMTQ5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsMTIgQEAKICNpZm5kZWYgUmVu
ZGVyVmlld19oCiAjZGVmaW5lIFJlbmRlclZpZXdfaAogCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lVmlldzsKLQogY2xhc3MgUmVuZGVyVmll
dyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyVmlldyhOb2RlKiwg
RnJhbWVWaWV3Kik7CkBAIC05Myw2ICs5MywzMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6
ZSYgbGF5b3V0RGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERlbHRhOyB9CiAgICAgdm9p
ZCBhZGRMYXlvdXREZWx0YShjb25zdCBJbnRTaXplJiBkZWx0YSkgeyBtX2xheW91dERlbHRhICs9
IGRlbHRhOyB9CiAKKyAgICB2b2lkIHB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gqIHJlbmRlcmVy
LCBjb25zdCBJbnRTaXplJiBvZmZzZXQpIHsKKyAgICAgICAgaWYgKG1fbGF5b3V0U3RhdGVTdXNw
ZW5kQ291bnQgfHwgbV9mcmFtZVZpZXctPm5lZWRzRnVsbFJlcGFpbnQoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9sYXlvdXRTdGF0ZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgTGF5
b3V0U3RhdGUobV9sYXlvdXRTdGF0ZSwgcmVuZGVyZXIsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCBwdXNoTGF5b3V0U3RhdGUoUmVuZGVyT2JqZWN0Kik7CisKKyAgICB2b2lkIHBvcExheW91
dFN0YXRlKCkgeworICAgICAgICBpZiAobV9sYXlvdXRTdGF0ZVN1c3BlbmRDb3VudCB8fCBtX2Zy
YW1lVmlldy0+bmVlZHNGdWxsUmVwYWludCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBMYXlvdXRTdGF0ZSogc3RhdGUgPSBtX2xheW91dFN0YXRlOworICAgICAgICBtX2xheW91dFN0
YXRlID0gc3RhdGUtPm1fbmV4dDsKKyAgICAgICAgc3RhdGUtPmRlc3Ryb3kocmVuZGVyQXJlbmEo
KSk7CisgICAgfQorCisgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9sYXlvdXRTdGF0ZVN1c3BlbmRDb3VudCA/IDAgOiBtX2xheW91dFN0YXRlOyB9CisKKyAg
ICAvLyBTdXNwZW5kcyB0aGUgTGF5b3V0U3RhdGUgb3B0aW1pemF0aW9uLiBVc2VkIHVuZGVyIHRy
YW5zZm9ybXMgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkKKyAgICAvLyBMYXlvdXRTdGF0
ZSAoY29tbW9uIGluIFNWRykgYW5kIHdoZW4gbWFuaXB1bGF0aW5nIHRoZSByZW5kZXIgdHJlZSBk
dXJpbmcgbGF5b3V0IGluIHdheXMKKyAgICAvLyB0aGF0IGNhbiB0cmlnZ2VyIHJlcGFpbnQgb2Yg
YSBub24tY2hpbGQgKGUuZy4gd2hlbiBhIGxpc3QgaXRlbSBtb3ZlcyBpdHMgbGlzdCBtYXJrZXIg
YXJvdW5kKS4KKyAgICB2b2lkIHN1c3BlbmRMYXlvdXRTdGF0ZSgpIHsgbV9sYXlvdXRTdGF0ZVN1
c3BlbmRDb3VudCsrOyB9CisgICAgdm9pZCByZXN1bWVMYXlvdXRTdGF0ZSgpIHsgQVNTRVJUKG1f
bGF5b3V0U3RhdGVTdXNwZW5kQ291bnQgPiAwKTsgbV9sYXlvdXRTdGF0ZVN1c3BlbmRDb3VudC0t
OyB9CisKIHByb3RlY3RlZDoKICAgICBGcmFtZVZpZXcqIG1fZnJhbWVWaWV3OwogCkBAIC0xMTcs
NiArMTQxLDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV90cnVuY2F0b3JXaWR0aDsKICAgICBib29s
IG1fZm9yY2VkUGFnZUJyZWFrOwogICAgIEludFNpemUgbV9sYXlvdXREZWx0YTsKKyAgICBMYXlv
dXRTdGF0ZSogbV9sYXlvdXRTdGF0ZTsKKyAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRlU3VzcGVu
ZENvdW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAJ
KHJldmlzaW9uIDIxMTQ5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpiaWRpUmVvcmRlckNo
YXJhY3RlcnMoCiAgICAgLy8gQ3JlYXRlIFJlbmRlclRleHQKICAgICBSZW5kZXJUZXh0KiB0ZXh0
ID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dChkb2N1bWVudCwgc3Ry
aW5nLmltcGwoKSk7CiAgICAgdGV4dC0+c2V0U3R5bGUoYmxvY2tTdHlsZSk7Ci0gICAgYmxvY2st
PmFkZENoaWxkKHRleHQpOworICAgIGJsb2NrLT5hcHBlbmRDaGlsZE5vZGUodGV4dCwgZmFsc2Up
OwogICAgIAogICAgIC8vIENhbGwgYmlkaVJlb3JkZXJMaW5lCiAgICAgQmlkaVN0YXRlIGJpZGk7
CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YmlkaVJlb3JkZXJDaGFyYWN0
ZXJzKAogICAgIH0KIAogICAgIC8vIFRlYXIgZG93biB0ZW1wb3JhcnkgUmVuZGVyQmxvY2ssIFJl
bmRlclRleHQsIGFuZCBCaWRpUnVucwotICAgIGJsb2NrLT5yZW1vdmVDaGlsZCh0ZXh0KTsKKyAg
ICBibG9jay0+cmVtb3ZlQ2hpbGROb2RlKHRleHQsIGZhbHNlKTsKICAgICB0ZXh0LT5kZXN0cm95
KCk7CiAgICAgYmxvY2stPmRlc3Ryb3koKTsKICAgICBkZWxldGVCaWRpUnVucyhkb2N1bWVudC0+
cmVuZGVyQXJlbmEoKSk7Cg==
</data>
<flag name="review"
          id="5799"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14243</attachid>
            <date>2007-04-28 10:44:21 -0700</date>
            <delta_ts>2007-04-29 06:47:40 -0700</delta_ts>
            <desc>Keep track of absolute translation and clip during layout</desc>
            <filename>repaintRectOptimization_r1.2.patch</filename>
            <type>text/plain</type>
            <size>105431</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIxMTY4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMDQtMjggIE1pdHogUGV0dGVsICA8bWl0
ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gdGVzdCBhbmQgdXBkYXRlZCByZXN1bHRzIGZvciBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4NworICAgICAgICAgIEltcGxlbWVudCBPKDEpIGFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdCBhbmQgYWJzb2x1dGVPdXRsaW5lQm94IGR1cmluZyBsYXlv
dXQgZm9yIGEgcG9zc2libGUgc3BlZWQgZ2FpbgorCisgICAgICAgICogZmFzdC9yZXBhaW50L2J1
Z3ppbGxhLTM1MDktZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAgICogZmFzdC9yZXBhaW50L2J1
Z3ppbGxhLTM1MDktZXhwZWN0ZWQucG5nOgorICAgICAgICAqIGZhc3QvcmVwYWludC9pbnRlcm1l
ZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvcmVwYWludC9pbnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhw
ZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxh
eW91dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1leHBlY3Rl
ZC5jaGVja3N1bToKKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1w
b3NpdGlvbi1leHBlY3RlZC5wbmc6CisKIDIwMDctMDQtMjggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9yZXBhaW50L2J1Z3ppbGxhLTM1MDktZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2J1Z3ppbGxhLTM1MDktZXhwZWN0ZWQuY2hl
Y2tzdW0JKHJldmlzaW9uIDIxMTY3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2J1Z3pp
bGxhLTM1MDktZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTJh
ZjdjZDk4M2Q2N2ZlNTZjNzljOGE5NjhiZGFhNzVkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorNWJkNzczMTZjNjMzNmJkM2RjNTM4MjgwNmY1ZTVhMzYKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91
dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvcmVwYWludC9pbnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhwZWN0
ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50
ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACis0Y2MzOWRiOWUwYWNmMWE2NmJkYjZhNmI3Y2MwYjBiNQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9p
bnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9pbnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9u
LWNsaXAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBh
aW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKK2xheWVyIGF0ICg4LDgpIHNpemUg
Nzg0eDQwIHNjcm9sbFkgNjAgc2Nyb2xsSGVpZ2h0IDIwMAorICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDc4NHg0MAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUg
Nzg0eDIwMCBbYmdjb2xvcj0jRjBGOEZGXQorICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7
RElWfSBhdCAoNzQ0LDApIHNpemUgNDB4NDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDQwKSBzaXplIDc4NHgzMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDQweDIwIFtiZ2NvbG9yPSNGRjAwMDBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
aW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1jbGlwLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0
ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBA
Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT48L3RpdGxlPgorICAgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAgICAgIC5mbG9hdCB7IGZsb2F0OiByaWdodDsgaGVpZ2h0OiA0MHB4OyB3
aWR0aDogNDBweDsgfQorICAgICAgICAudGVzdCB7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGFsaWNlYmx1ZSB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0icmVwYWlu
dC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLnN0eWxl
LmhlaWdodD0nMjBweCc7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiIHN0eWxl
PSJvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDQwcHgiPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXN0Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsb2F0Ij48L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgc3R5bGU9ImNsZWFyOiByaWdodDsgcGFkZGluZy1ib3R0b206IDEwcHg7Ij4KKyAgICAg
ICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IiBpZD0idGFyZ2V0Ij4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c2NyaXB0
PnNjcm9sbGVyLnNjcm9sbFRvcCA9IDYwOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24t
ZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50
L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9u
IDIxMTY3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQt
cG9zaXRpb24tZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTFl
Mjk3MDkxY2FhZTZkYzliMGJiODg3YTU5MDAyMWE2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorZmYyYWI4Y2E4NzgyNmM5Mzk3NzViYTQ0N2YzYTZkODQKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjExNjgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyMiBAQAorMjAwNy0wNC0yOCAgTWl0eiBQZXR0ZWwgIDxtaXR6QHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4NworICAgICAg
ICAgIEltcGxlbWVudCBPKDEpIGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCBhbmQgYWJzb2x1
dGVPdXRsaW5lQm94IGR1cmluZyBsYXlvdXQgZm9yIGEgcG9zc2libGUgc3BlZWQgZ2FpbgorCisg
ICAgICAgIFRlc3QgZm9yIGEgYnVnIGZpeGVkIGJ5IHRoaXMgcGF0Y2g6IGZhc3QvcmVwYWludC9p
bnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAuaHRtbAorCisgICAgICAgIEJ5IGtlZXBp
bmcgdHJhY2sgb2YgdGhlIHRvdGFsIHRyYW5zbGF0aW9uIGFuZCBjbGlwIGR1cmluZyBsYXlvdXQs
IGFic29sdXRlUG9zaXRpb24gYW5kCisgICAgICAgIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0
IGJlY29tZSBPKDEpLgorCisgICAgICAgICogV2ViQ29yZS5wcm86IEFkZGVkIExheW91dFN0YXRl
LmNwcAorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2o6IEFk
ZGVkIExheW91dFN0YXRlLntjcHAsaH0KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZGVkIExheW91dFN0YXRlLntjcHAsaH0KKyAgICAgICAgKiBXZWJDb3Jl
U291cmNlcy5ia2w6IEFkZGVkIExheW91dFN0YXRlLmNwcAorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KTogV2hlbiBkb2lu
ZyBzdWJ0cmVlIGxheW91dCwgcHVzaCBhbiBpbml0aWFsIGxheW91dCBzdGF0ZSBmb3IgdGhlCisg
ICAgICAgIGxheW91dCByb290LgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHA6
IEFkZGVkLiBBIExheW91dFN0YXRlIGNvcnJlc3BvbmRpbmcgdG8gYSBib3ggY29uc2lzdHMgb2Yg
dGhlIG9yaWdpbiBvZgorICAgICAgICBpdHMgY29vcmRpbmF0ZSBzeXN0ZW0gaW4gdmlldyBjb29y
ZGluYXRlcyBhbmQgcG9zc2libHkgdGhlIGNsaXAgcmVjdCwgaW4gdmlldyBjb29yZGluYXRlcywg
d2hpY2gKKyAgICAgICAgYXBwbGllcyB0byBpdHMgY2hpbGRyZW4uCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3Rh
dGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0U3RhdGU6Om9wZXJhdG9yIGRlbGV0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xh
eW91dFN0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6OkxheW91
dFN0YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKTogRmFjdG9yZWQgb3V0IHRoZSAib25s
eSBwb3NpdGlvbmVkIG9iamVjdHMiIGNhc2UgaW50bworICAgICAgICBsYXlvdXRPbmx5UG9zaXRp
b25lZE9iamVjdHMoKS4gQWRkZWQgY29kZSB0byBwdXNoL3BvcCBMYXlvdXRTdGF0ZSwgdW5sZXNz
IHdlIGhhdmUgY29sdW1ucywgaW4KKyAgICAgICAgd2hpY2ggY2FzZSB3ZSBkaXNhYmxlL2VuYWJs
ZSBMYXlvdXRTdGF0ZS4gUmVtb3ZlZCB0aGUgdHJhbnNsYXRpb24gYnkgdGhlIGxheW91dCBkZWx0
YQorICAgICAgICBvZiB0aGUgb2xkIGFic29sdXRlIHJlY3RzLCBzaW5jZSB0aGF0IGlzIG5vdyBp
bnRlZ3JhbCB0byBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBhbmQKKyAgICAgICAgYWJz
b2x1dGVPdXRsaW5lQm94KCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0
T25seVBvc2l0aW9uZWRPYmplY3RzKTogQWRkZWQgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdGhhdCBj
aGVja3MgZm9yCisgICAgICAgIGFuZCBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIG9ubHkgcG9zaXRp
b25lZCBvYmplY3RzIG5lZWQgbGF5b3V0LiBSZXR1cm5zIHRydWUgaW4gdGhhdCBjYXNlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2F0cyk6IERp
c2FibGVkIExheW91dFN0YXRlIHdoZW4gcmVwYWludGluZyBmbG9hdHMsIHNpbmNlCisgICAgICAg
IHRoZXkgbWF5IGJlbG9uZyB0byBvdGhlciBjb250YWluZXJzLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyKTogRGlzYWJsZWQgTGF5b3V0U3RhdGUgd2hl
biBhZGRpbmcgYW5kIHJlbW92aW5nIGZyb20gdGhlCisgICAgICAgIGZpcnN0IGxldHRlciBjb250
YWluZXIsIHNpbmNlIGl0IG1heSBiZSBkaWZmZXJlbnQgdGhhbiBvdXJzZWx2ZXMuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldFN0eWxlKTogTWlub3IgY2xl
YW51cDogY2hhbmdlZCBlbGVtZW50KCktPmRvY3VtZW50KCkgdG8gdGhlIGVxdWl2YWxlbnQgZG9j
dW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b2Zmc2V0VW5kZXJSZWxQb3Np
dGlvbmVkSW5saW5lKTogQWRkZWQuIEZhY3RvcmVkIG91dCBjb21tb24gY29kZSBmcm9tCisgICAg
ICAgIGFic29sdXRlUG9zaXRpb24sIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0IGFuZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbiBpbnRvIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24pOiBBZGRlZCBhbiBPKDEpIGNv
ZGUgcGF0aCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZworICAgICAgICBsYXlv
dXQgKGFuZCBMYXlvdXRTdGF0ZSBoYXMgbm90IGJlZW4gZGlzYWJsZWQpLiBGYWN0b3JlZCBvdXQg
c29tZSBjb2RlIGludG8KKyAgICAgICAgb2Zmc2V0VW5kZXJSZWxQb3NpdGlvbmVkSW5saW5lLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3Qp
OiBBZGRlZCB0aGUgbGF5b3V0IGRlbHRhIGhlcmUsIHNvIGNhbGxlcnMgZG9uJ3QgbmVlZAorICAg
ICAgICB0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUFic29sdXRlUmVw
YWludFJlY3QpOiBBZGRlZCBhbiBPKDEpIGNvZGUgcGF0aCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkCisgICAgICAgIGR1cmluZyBsYXlvdXQgKGFuZCBMYXlvdXRTdGF0ZSBoYXMgbm90IGJl
ZW4gZGlzYWJsZWQpLiBGYWN0b3JlZCBvdXQgc29tZSBjb2RlIGludG8KKyAgICAgICAgb2Zmc2V0
VW5kZXJSZWxQb3NpdGlvbmVkSW5saW5lLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjpsYXlvdXQpOiBB
ZGRlZCBMYXlvdXRTdGF0ZSBwdXNoL3BvcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91
dEJsb2NrKTogRmFjdG9yZWQgb3V0IHRoZSAib25seSBwb3NpdGlvbmVkIG9iamVjdHMiIGNhc2Ug
aW50bworICAgICAgICBsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMoKS4gQWRkZWQgTGF5b3V0
U3RhdGUgcHVzaC9wb3AuIFJlbW92ZWQgdGhlIHRyYW5zbGF0aW9uIGJ5IHRoZSBsYXlvdXQgZGVs
dGEKKyAgICAgICAgb2YgdGhlIG9sZCBhYnNvbHV0ZSByZWN0cywgc2luY2UgdGhhdCBpcyBub3cg
aW50ZWdyYWwgdG8gYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgYW5kCisgICAgICAgIGFi
c29sdXRlT3V0bGluZUJveCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3c6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVj
dCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGb3JlaWduT2JqZWN0OjpsYXlvdXQp
OiBEaXNhYmxlZCBMYXlvdXRTdGF0ZSBiZWNhdXNlIGl0IGlzIGluY29tcGF0aWJsZSB3aXRoIGFy
Yml0cmFyeQorICAgICAgICBhZmZpbmUgdHJhbnNmb3Jtcy4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySFRNTENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFz
OjpsYXlvdXQpOiBSZW1vdmVkIHRoZSB0cmFuc2xhdGlvbiBieSB0aGUgbGF5b3V0IGRlbHRhIG9m
IHRoZSBvbGQgYWJzb2x1dGUKKyAgICAgICAgcmVjdHMsIHNpbmNlIHRoYXQgaXMgbm93IGludGVn
cmFsIHRvIGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGFuZCBhYnNvbHV0ZU91dGxpbmVC
b3goKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OmxheW91dCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5
ZXJQb3NpdGlvbnMpOiBBZGRlZCBBU1NFUlRzLiBGYWN0b3JlZCBvdXQgc29tZSBjb2RlIGludG8K
KyAgICAgICAgUmVuZGVyQm94OjpvZmZzZXRVbmRlclJlbFBvc2l0aW9uZWRJbmxpbmUuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KTog
RGlzYWJsZWQgTGF5b3V0U3RhdGUgYXJvdW5kIHRoZSBjYWxsIHRvCisgICAgICAgIHNjcm9sbFRv
T2Zmc2V0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6dXBkYXRlTWFya2VyTG9jYXRpb24pOiBEaXNhYmxl
ZCBMYXlvdXRTdGF0ZSB3aGVuIG1vdmluZyB0aGUgbGlzdCBtYXJrZXIsIHNpbmNlCisgICAgICAg
IGl0IGNhbiB0cmlnZ2VyIHJlcGFpbnRpbmcgaW4gb3RoZXIgY29udGFpbmVycy4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6aXNSb290KTogTWlub3IgY2xlYW51cDogY2hhbmdlZCBlbGVtZW50KCktPmRvY3VtZW50
KCkgdG8gdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgZG9jdW1lbnQoKS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QpOiBSZW1vdmVkICdy
ZXR1cm4nIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojpjb250YWluZXIpOiBSZW9yZGVyZWQgdG8gYXZvaWQgY2FsbGluZyBpc1RleHQo
KSB0d2ljZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVPdXRsaW5l
Qm94KTogQWRkZWQgdGhlIGxheW91dCBkZWx0YSBoZXJlLCBzbyBjYWxsZXJzIGRvbid0IG5lZWQg
dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6IERpc2FibGVkIExheW91dFN0
YXRlIGJlY2F1c2UgaXQgaXMgaW5jb21wYXRpYmxlIHdpdGggYXJiaXRyYXJ5CisgICAgICAgIGFm
ZmluZSB0cmFuc2Zvcm1zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KTogIEZhY3RvcmVkIG91dCB0aGUg
Im9ubHkgcG9zaXRpb25lZCBvYmplY3RzIiBjYXNlIGludG8KKyAgICAgICAgbGF5b3V0T25seVBv
c2l0aW9uZWRPYmplY3RzKCkuIEFkZGVkIExheW91dFN0YXRlIHB1c2gvcG9wLiBSZW1vdmVkIHRo
ZSB0cmFuc2xhdGlvbiBieSB0aGUgbGF5b3V0IGRlbHRhCisgICAgICAgIG9mIHRoZSBvbGQgYWJz
b2x1dGUgcmVjdHMsIHNpbmNlIHRoYXQgaXMgbm93IGludGVncmFsIHRvIGFic29sdXRlQ2xpcHBl
ZE92ZXJmbG93UmVjdCgpIGFuZAorICAgICAgICBhYnNvbHV0ZU91dGxpbmVCb3goKS4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KTogQWRkZWQgdGhlIGxh
eW91dCBkZWx0YSBoZXJlLCBzbyBjYWxsZXJzCisgICAgICAgIGRvbid0IG5lZWQgdG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0
KTogRm9yIHRoZSBPKDEpIGNvZGUgcGF0aCwgc2tpcHBlZCB0aGUgY29ycmVjdGlvbgorICAgICAg
ICBmb3IgdGhlIHBhcmVudCByb3csIGJlY2F1c2UgUmVuZGVyVGFibGVSb3cgZG9lc24ndCBwdXNo
IGEgdHJhbnNsYXRpb24gaW50byBMYXlvdXRTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6YWJzb2x1dGVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6
bGF5b3V0KTogQWRkZWQgTGF5b3V0U3RhdGUgcHVzaC9wb3AuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNl
Y3Rpb246OnNldENlbGxXaWR0aHMpOiBBZGRlZCBMYXlvdXRTdGF0ZSBwdXNoL3BvcCBpZiBjZWxs
cyBhcmUgcmVwYWludGVkIG9yCisgICAgICAgIHJlY2VpdmUgbGF5b3V0LgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93SGVpZ2h0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MpOiBBZGRlZCBMYXlvdXRT
dGF0ZSBwdXNoL3BvcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OmxheW91dCk6IEFkZGVkIGluaXRpYWwgTGF5b3V0U3RhdGUgc2V0dXAgZm9y
IHRoZSBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludEJveERlY29y
YXRpb25zKTogTWlub3IgY2xlYW51cDogY2hhbmdlZCBlbGVtZW50KCktPmRvY3VtZW50KCkgdG8g
dGhlCisgICAgICAgIGVxdWl2YWxlbnQgZG9jdW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3OjpwdXNoTGF5b3V0U3RhdGUpOiBBZGRlZC4gUHVzaGVzIGluaXRpYWwgbGF5
b3V0IHN0YXRlIGZvciBzdWJ0cmVlIGxheW91dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cHVzaExheW91dFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBvcExheW91dFN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmRpc2FibGVMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjplbmFibGVMYXlvdXRTdGF0ZSk6CisKIDIwMDctMDQtMjggIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguICBDaGFuZ2UgdXNlIG9mIG5pbCB0byAw
IGluIEMrKyBzb3VyY2UgZmlsZS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMjExNjcpCisrKyBXZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNiArNjQ3LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcmVuZGVyaW5nL0lubGluZUJveC5jcHAgXAogICAgIHJlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcCBcCiAgICAgcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIFwKKyAgICByZW5kZXJp
bmcvTGF5b3V0U3RhdGUuY3BwIFwKICAgICByZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHAgXAog
ICAgIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQXJl
bmEuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDcgQEAKICAg
ICAgICAgcmVuZGVyaW5nL0lubGluZUJveC5jcHAKICAgICAgICAgcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwCiAgICAgICAgIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorICAgICAgICBy
ZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCiAgICAgICAgIHJlbmRlcmluZy9MaXN0TWFya2VyQm94
LmNwcAogICAgICAgICByZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcAogICAgICAgICByZW5kZXJp
bmcvUmVuZGVyQXJlbmEuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM3MSw2ICsz
MzcxLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHJlbmRlcmluZ1xMYXlvdXRTdGF0ZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJlbmRlcmluZ1xMYXlvdXRTdGF0ZS5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxyZW5k
ZXJpbmdcTGVuZ3RoLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMTY3KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2
ICsyNzEsOCBAQAogCQkxQ0ZDRUVGQTBBQUNDN0E3MDAzNDg3NTAgLyogRE9NSFRNTElucHV0RWxl
bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkNFRUY5MEFBQ0M3OTAwMDM0ODc1MCAvKiBET01IVE1MSW5w
dXRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwogCQkzNzkxOUMyMzBCN0QxODg2MDBBNTY5OTggLyog
UG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5j
cHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMy
MjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKCk7IH07IH07CisJCTJEOTA2NjA2MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlv
dXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovOyB9OworCQky
RDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAv
KiBMYXlvdXRTdGF0ZS5oICovOyB9OwogCQk0NDhBMjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0OEEyOUJEMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5oICovOyB9OwogCQk0NDhBMjlDMDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQ4QTI5QkUwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKIAkJNDQ4QUQyN0MwQTQ4MTM3QTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CkBAIC0zMzgyLDYgKzMzODQsOCBAQAogCQkyRDkwNjYw
QzA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2xpcGJvYXJkTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
Mzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRp
b25JdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDkwNjYwNDBCRTE0
MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExheW91dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NDhBMjlCRDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OEEyOUJFMEE0NkQ5
Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTQ2Niw2ICs5NDcwLDggQEAKIAkJCQlBOENGRjVEQjBBMTU1
QTA1MDAwQTQyMzQgLyogSW5saW5lUnVuQm94LmggKi8sCiAJCQkJQkNFQTQ4MUEwOTdEOTMwMjAw
OTRDOUU0IC8qIElubGluZVRleHRCb3guY3BwICovLAogCQkJCUJDRUE0ODFCMDk3RDkzMDIwMDk0
QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8sCisJCQkJMkQ5MDY2MDQwQkUxNDFENDAwOTU2OTk4
IC8qIExheW91dFN0YXRlLmNwcCAqLywKKwkJCQkyRDkwNjYwNTBCRTE0MUQ0MDA5NTY5OTggLyog
TGF5b3V0U3RhdGUuaCAqLywKIAkJCQk5MzVDNDc2MDA5QUM0Q0QxMDBBNkFBQjQgLyogTGVuZ3Ro
LmggKi8sCiAJCQkJQThFQTdBNEQwQTE5MUE1MjAwQThFRjVGIC8qIExpc3RNYXJrZXJCb3guY3Bw
ICovLAogCQkJCUE4RUE3QTQ5MEExOTFBNTIwMEE4RUY1RiAvKiBMaXN0TWFya2VyQm94LmggKi8s
CkBAIC0xMTI0MCw2ICsxMTI0Niw3IEBACiAJCQkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8q
IEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNkZDNDQyRTBCQUU1QTlFMDA5
MEVERTEgLyogSmF2YVNjcmlwdFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUMy
OUEwMEJCMDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xMjYwOSw2ICsxMjYxNiw3IEBACiAJCQkJMDZGQzQ0MkQwQkFFNUE5RTAwOTBFREUxIC8q
IEphdmFTY3JpcHRTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUMyOTlGMEJC
MDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFB
QTNGNkYwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIxMTY3KQorKysgV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw3ICs0MDksMTIgQEAg
dm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogICAgICAgICBsYXllci0+
Y2hlY2tGb3JSZXBhaW50T25SZXNpemUoKTsKIAogICAgIHBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7
CisKKyAgICBpZiAoc3VidHJlZSkKKyAgICAgICAgcm9vdC0+dmlldygpLT5wdXNoTGF5b3V0U3Rh
dGUocm9vdCk7CiAgICAgcm9vdC0+bGF5b3V0KCk7CisgICAgaWYgKHN1YnRyZWUpCisgICAgICAg
IHJvb3QtPnZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKICAgICBkLT5sYXlvdXRSb290ID0gMDsK
IAogICAgIG1fZnJhbWUtPmludmFsaWRhdGVTZWxlY3Rpb24oKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL0xheW91dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRTdGF0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRT
dGF0ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTGF5b3V0U3RhdGUuaCIKKworI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKExheW91dFN0YXRlKiBwcmV2LCBS
ZW5kZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgQVNTRVJU
KHByZXYpOworCisgICAgbV9uZXh0ID0gcHJldjsKKworICAgIGJvb2wgZml4ZWQgPSByZW5kZXJl
ci0+aXNQb3NpdGlvbmVkKCkgJiYgcmVuZGVyZXItPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4
ZWRQb3NpdGlvbjsKKyAgICBpZiAoZml4ZWQpIHsKKyAgICAgICAgaW50IGZpeGVkWCA9IDA7Cisg
ICAgICAgIGludCBmaXhlZFkgPSAwOworICAgICAgICByZW5kZXJlci0+dmlldygpLT5hYnNvbHV0
ZVBvc2l0aW9uKGZpeGVkWCwgZml4ZWRZLCB0cnVlKTsKKyAgICAgICAgbV9vZmZzZXQgPSBJbnRT
aXplKGZpeGVkWCwgZml4ZWRZKSArIG9mZnNldDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9vZmZz
ZXQgPSBwcmV2LT5tX29mZnNldCArIG9mZnNldDsKKworICAgIGlmIChyZW5kZXJlci0+aXNSZWxQ
b3NpdGlvbmVkKCkpIHsKKyAgICAgICAgaW50IHJlbFggPSAwOworICAgICAgICBpbnQgcmVsWSA9
IDA7CisgICAgICAgIHJlbmRlcmVyLT5sYXllcigpLT5yZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KHJl
bFgsIHJlbFkpOworICAgICAgICBtX29mZnNldCArPSBJbnRTaXplKHJlbFgsIHJlbFkpOworICAg
IH0gZWxzZSBpZiAocmVuZGVyZXItPmlzUG9zaXRpb25lZCgpICYmICFmaXhlZCkgeworICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBjb250YWluZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCkpIHsK
KyAgICAgICAgICAgIGludCBhYnNYID0gMDsKKyAgICAgICAgICAgIGludCBhYnNZID0gMDsKKyAg
ICAgICAgICAgIHJlbmRlcmVyLT5vZmZzZXRVbmRlclJlbFBvc2l0aW9uZWRJbmxpbmUoY29udGFp
bmVyLCBhYnNYLCBhYnNZKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0ICs9IEludFNpemUoYWJzWCwg
YWJzWSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2NsaXBwZWQgPSAhZml4ZWQgJiYgcHJl
di0+bV9jbGlwcGVkOworICAgIGlmIChtX2NsaXBwZWQpCisgICAgICAgIG1fY2xpcFJlY3QgPSBw
cmV2LT5tX2NsaXBSZWN0OworICAgIGlmIChyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsK
KyAgICAgICAgaW50IHggPSBtX29mZnNldC53aWR0aCgpOworICAgICAgICBpbnQgeSA9IG1fb2Zm
c2V0LmhlaWdodCgpOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSByZW5kZXJlci0+bGF5
ZXIoKTsKKyAgICAgICAgSW50UmVjdCBjbGlwUmVjdCh4LCB5LCBsYXllci0+d2lkdGgoKSwgbGF5
ZXItPmhlaWdodCgpKTsKKyAgICAgICAgaWYgKG1fY2xpcHBlZCkKKyAgICAgICAgICAgIG1fY2xp
cFJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBt
X2NsaXBSZWN0ID0gY2xpcFJlY3Q7CisgICAgICAgICAgICBtX2NsaXBwZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGxheWVyLT5zdWJ0cmFjdFNjcm9sbE9mZnNldCh4LCB5KTsKKyAgICAg
ICAgbV9vZmZzZXQgPSBJbnRTaXplKHgsIHkpOworICAgIH0KKyAgICAvLyBGSVhNRTogPGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDQzPiBBcHBseSBjb250cm9sIGNs
aXAgaWYgcHJlc2VudC4KK30KKworTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKFJlbmRlck9iamVj
dCogcm9vdCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lciA9IHJvb3QtPmNvbnRhaW5l
cigpOworICAgIG1fY2xpcHBlZCA9IHRydWU7CisgICAgbV9jbGlwUmVjdCA9IGNvbnRhaW5lci0+
YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CisgICAgaW50IHggPSAwOworICAgIGludCB5
ID0gMDsKKyAgICBjb250YWluZXItPmFic29sdXRlUG9zaXRpb24oeCwgeSk7CisgICAgbV9vZmZz
ZXQgPSBJbnRTaXplKHgsIHkpOworICAgIG1fbmV4dCA9IDA7Cit9CisKKyNpZm5kZWYgTkRFQlVH
CitzdGF0aWMgYm9vbCBpbkxheW91dFN0YXRlRGVzdHJveTsKKyNlbmRpZgorCit2b2lkIExheW91
dFN0YXRlOjpkZXN0cm95KFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkKK3sKKyNpZm5kZWYgTkRF
QlVHCisgICAgaW5MYXlvdXRTdGF0ZURlc3Ryb3kgPSB0cnVlOworI2VuZGlmCisgICAgZGVsZXRl
IHRoaXM7CisjaWZuZGVmIE5ERUJVRworICAgIGluTGF5b3V0U3RhdGVEZXN0cm95ID0gZmFsc2U7
CisjZW5kaWYKKyAgICByZW5kZXJBcmVuYS0+ZnJlZSgqKHNpemVfdCopdGhpcywgdGhpcyk7Cit9
CisKK3ZvaWQqIExheW91dFN0YXRlOjpvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVu
YSogcmVuZGVyQXJlbmEpIHRocm93KCkKK3sKKyAgICByZXR1cm4gcmVuZGVyQXJlbmEtPmFsbG9j
YXRlKHN6KTsKK30KKwordm9pZCBMYXlvdXRTdGF0ZTo6b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHB0
ciwgc2l6ZV90IHN6KQoreworICAgIEFTU0VSVChpbkxheW91dFN0YXRlRGVzdHJveSk7CisgICAg
KihzaXplX3QqKXB0ciA9IHN6OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL0xheW91dFN0YXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExheW91dFN0YXRlX2gK
KyNkZWZpbmUgTGF5b3V0U3RhdGVfaAorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
IkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJBcmVuYTsK
K2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlck9iamVjdDsKKworY2xhc3MgTGF5b3V0U3Rh
dGUgeworcHVibGljOgorICAgIExheW91dFN0YXRlKCkKKyAgICAgICAgOiBtX2NsaXBwZWQoZmFs
c2UpCisgICAgICAgICwgbV9uZXh0KDApCisgICAgeworICAgIH0KKworICAgIExheW91dFN0YXRl
KExheW91dFN0YXRlKiwgUmVuZGVyQm94KiwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKKyAgICBM
YXlvdXRTdGF0ZShSZW5kZXJPYmplY3QqKTsKKworICAgIHZvaWQgZGVzdHJveShSZW5kZXJBcmVu
YSopOworCisgICAgLy8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuCisgICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOworCisgICAgLy8gT3ZlcnJpZGRl
biB0byBwcmV2ZW50IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgorICAgIHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBzaXplX3QpOworCitwcml2YXRlOgorICAgIC8vIFRo
ZSBub3JtYWwgb3BlcmF0b3IgbmV3IGlzIGRpc2FsbG93ZWQuCisgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCkgdGhyb3coKTsKKworcHVibGljOgorICAgIGJvb2wgbV9jbGlwcGVkOworICAg
IEludFJlY3QgbV9jbGlwUmVjdDsKKyAgICBJbnRTaXplIG1fb2Zmc2V0OworICAgIHN0cnVjdCBM
YXlvdXRTdGF0ZSogbV9uZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gTGF5b3V0U3RhdGVfaApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2
aXNpb24gMjExNjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4NiwyNSArNDg2LDIzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJs
b2NrKGJvb2wgcmVsYXkKICAgICBpZiAoaXNJbmxpbmUoKSAmJiAhaXNJbmxpbmVCbG9ja09ySW5s
aW5lVGFibGUoKSkgLy8gSW5saW5lIDxmb3JtPnMgaW5zaWRlIHZhcmlvdXMgdGFibGUgZWxlbWVu
dHMgY2FuCiAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGNhdXNlIHVzIHRvIGNvbWUgaW4gaGVyZS4gIEp1c3QgYmFpbC4KIAotICAgIGlmICgh
cmVsYXlvdXRDaGlsZHJlbiAmJiBwb3NDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxk
TmVlZHNMYXlvdXQoKSAmJiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgLy8gQWxsIHdl
IGhhdmUgdG8gaXMgbGF5IG91dCBvdXIgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlv
dXRQb3NpdGlvbmVkT2JqZWN0cyhmYWxzZSk7Ci0gICAgICAgIGlmIChoYXNPdmVyZmxvd0NsaXAo
KSkKLSAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwot
ICAgICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CisgICAgaWYgKCFyZWxheW91dENoaWxkcmVu
ICYmIGxheW91dE9ubHlQb3NpdGlvbmVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAorCiAgICAgSW50UmVjdCBvbGRCb3VuZHM7CiAgICAgSW50UmVjdCBvbGRPdXRsaW5l
Qm94OwogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5
b3V0KCk7CiAgICAgaWYgKGNoZWNrRm9yUmVwYWludCkgewogICAgICAgICBvbGRCb3VuZHMgPSBh
YnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKLSAgICAgICAgb2xkQm91bmRzLm1vdmUodmll
dygpLT5sYXlvdXREZWx0YSgpKTsKICAgICAgICAgb2xkT3V0bGluZUJveCA9IGFic29sdXRlT3V0
bGluZUJveCgpOwotICAgICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5sYXlvdXREZWx0
YSgpKTsKICAgICB9CiAKKyAgICBib29sIGhhZENvbHVtbnMgPSBtX2hhc0NvbHVtbnM7CisgICAg
aWYgKCFoYWRDb2x1bW5zKQorICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJ
bnRTaXplKHhQb3MoKSwgeVBvcygpKSk7CisgICAgZWxzZQorICAgICAgICB2aWV3KCktPmRpc2Fi
bGVMYXlvdXRTdGF0ZSgpOworCiAgICAgaW50IG9sZFdpZHRoID0gbV93aWR0aDsKICAgICBpbnQg
b2xkQ29sdW1uV2lkdGggPSBkZXNpcmVkQ29sdW1uV2lkdGgoKTsKIApAQCAtNjA2LDYgKzYwNCwx
MSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5CiAgICAgbV9vdmVy
Zmxvd1dpZHRoID0gbWF4KG1fb3ZlcmZsb3dXaWR0aCwgbV93aWR0aCk7CiAgICAgbV9vdmVyZmxv
d0hlaWdodCA9IG1heChtX292ZXJmbG93SGVpZ2h0LCBtX2hlaWdodCk7CiAKKyAgICBpZiAoIWhh
ZENvbHVtbnMpCisgICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKyAgICBlbHNlCisg
ICAgICAgIHZpZXcoKS0+ZW5hYmxlTGF5b3V0U3RhdGUoKTsKKwogICAgIC8vIFVwZGF0ZSBvdXIg
c2Nyb2xsIGluZm9ybWF0aW9uIGlmIHdlJ3JlIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBu
b3cgdGhhdCB3ZSBrbm93IGlmCiAgICAgLy8gd2Ugb3ZlcmZsb3cgb3Igbm90LgogICAgIGlmICho
YXNPdmVyZmxvd0NsaXAoKSkKQEAgLTEyMzgsNiArMTI0MSwzMCBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvCiAgICAgaGFuZGxlQm90dG9tT2ZCbG9jayh0b3AsIGJv
dHRvbSwgbWFyZ2luSW5mbyk7CiB9CiAKK2Jvb2wgUmVuZGVyQmxvY2s6OmxheW91dE9ubHlQb3Np
dGlvbmVkT2JqZWN0cygpCit7CisgICAgaWYgKCFwb3NDaGlsZE5lZWRzTGF5b3V0KCkgfHwgbm9y
bWFsQ2hpbGROZWVkc0xheW91dCgpIHx8IHNlbGZOZWVkc0xheW91dCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBBbGwgd2UgaGF2ZSB0byBpcyBsYXkgb3V0IG91ciBwb3NpdGlv
bmVkIG9iamVjdHMuCisgICAgaWYgKCFtX2hhc0NvbHVtbnMpCisgICAgICAgIHZpZXcoKS0+cHVz
aExheW91dFN0YXRlKHRoaXMsIEludFNpemUoeFBvcygpLCB5UG9zKCkpKTsKKyAgICBlbHNlCisg
ICAgICAgIHZpZXcoKS0+ZGlzYWJsZUxheW91dFN0YXRlKCk7CisKKyAgICBsYXlvdXRQb3NpdGlv
bmVkT2JqZWN0cyhmYWxzZSk7CisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQorICAgICAgICBt
X2xheWVyLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKKworICAgIGlmICghbV9oYXND
b2x1bW5zKQorICAgICAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CisgICAgZWxzZQorICAg
ICAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7CisKKyAgICBzZXROZWVkc0xheW91dChm
YWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFBv
c2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIHsKICAgICBpZiAobV9wb3Np
dGlvbmVkT2JqZWN0cykgewpAQCAtMTI4Miw2ICsxMzA5LDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6
OnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2EKICAgICAgICAgCiAgICAgICAgIEZsb2F0aW5nT2JqZWN0
KiByOwogICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBp
dCgqbV9mbG9hdGluZ09iamVjdHMpOworCisgICAgICAgIC8vIEZJWE1FOiBBdm9pZCBkaXNhYmxp
bmcgTGF5b3V0U3RhdGUuIEF0IHRoZSB2ZXJ5IGxlYXN0LCBkb24ndCBkaXNhYmxlIGl0IGZvciBm
bG9hdHMgb3JpZ2luYXRpbmcKKyAgICAgICAgLy8gaW4gdGhpcyBibG9jay4gQmV0dGVyIHlldCB3
b3VsZCBiZSB0byBwdXNoIGV4dHJhIHN0YXRlIGZvciB0aGUgY29udGFpbmVycyBvZiBvdGhlciBm
bG9hdHMuCisgICAgICAgIHZpZXcoKS0+ZGlzYWJsZUxheW91dFN0YXRlKCk7CiAgICAgICAgIGZv
ciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0KSB7CiAgICAgICAgICAgICAvLyBPbmx5IHJl
cGFpbnQgdGhlIG9iamVjdCBpZiBpdCBpcyBvdmVyaGFuZ2luZywgaXMgbm90IGluIGl0cyBvd24g
bGF5ZXIsIGFuZAogICAgICAgICAgICAgLy8gaXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRvIHBhaW50
IChub1BhaW50IGlzbid0IHNldCkuIFdoZW4gcGFpbnRBbGxEZXNjZW5kYW50cyBpcyB0cnVlLCB0
aGUgbGF0dGVyCkBAIC0xMjkxLDYgKzEzMjIsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZXBhaW50
T3ZlcmhhbmdpbmdGbG9hCiAgICAgICAgICAgICAgICAgci0+bm9kZS0+cmVwYWludE92ZXJoYW5n
aW5nRmxvYXRzKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgdmlldygpLT5l
bmFibGVMYXlvdXRTdGF0ZSgpOwogICAgIH0KIH0KIApAQCAtMzkzOCw5ICszOTcwLDExIEBAIHZv
aWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyKCkKICAgICB9CiAKICAgICAvLyBJZiB0
aGUgY2hpbGQgZG9lcyBub3QgYWxyZWFkeSBoYXZlIHN0eWxlLCB3ZSBjcmVhdGUgaXQgaGVyZS4K
LSAgICBpZiAoY3VyckNoaWxkLT5pc1RleHQoKSAmJiAhY3VyckNoaWxkLT5pc0JSKCkgJiYgCi0g
ICAgICAgIGN1cnJDaGlsZC0+cGFyZW50KCktPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IFJlbmRl
clN0eWxlOjpGSVJTVF9MRVRURVIpIHsKLSAgICAgICAgCisgICAgaWYgKGN1cnJDaGlsZC0+aXNU
ZXh0KCkgJiYgIWN1cnJDaGlsZC0+aXNCUigpICYmIGN1cnJDaGlsZC0+cGFyZW50KCktPnN0eWxl
KCktPnN0eWxlVHlwZSgpICE9IFJlbmRlclN0eWxlOjpGSVJTVF9MRVRURVIpIHsKKyAgICAgICAg
Ly8gT3VyIGxheXVvdCBzdGF0ZSBpcyBub3QgdmFsaWQgZm9yIHRoZSByZXBhaW50cyB3ZSBhcmUg
Z29pbmcgdG8gdHJpZ2dlciBieQorICAgICAgICAvLyBhZGRpbmcgYW5kIHJlbW92aW5nIGNoaWxk
cmVuIG9mIGZpcnN0TGV0dGVyQ29udGFpbmVyLgorICAgICAgICB2aWV3KCktPmRpc2FibGVMYXlv
dXRTdGF0ZSgpOworCiAgICAgICAgIFJlbmRlclRleHQqIHRleHRPYmogPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUZXh0Kj4oY3VyckNoaWxkKTsKICAgICAgICAgCiAgICAgICAgIC8vIENyZWF0ZSBvdXIg
cHNldWRvIHN0eWxlIG5vdyB0aGF0IHdlIGhhdmUgb3VyIGZpcnN0TGV0dGVyQ29udGFpbmVyIGRl
dGVybWluZWQuCkBAIC0zOTk0LDYgKzQwMjgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVG
aXJzdExldHRlcigpCiAKICAgICAgICAgICAgIHRleHRPYmotPmRlc3Ryb3koKTsKICAgICAgICAg
fQorICAgICAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7CiAgICAgfQogfQogCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDIxMTY3KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjk0LDYgKzI5NCw3IEBAIHBy
aXZhdGU6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBuZXdMaW5lKCk7CiAgICAgdmlydHVhbCBib29s
IGhhc0xpbmVJZkVtcHR5KCkgY29uc3Q7CisgICAgYm9vbCBsYXlvdXRPbmx5UG9zaXRpb25lZE9i
amVjdHMoKTsKIAogcHJpdmF0ZToKICAgICBQb3NpdGlvbiBwb3NpdGlvbkZvckJveChJbmxpbmVC
b3gqLCBib29sIHN0YXJ0ID0gdHJ1ZSkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAJKHJldmlzaW9uIDIxMTY3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgUmVuZGVyQm94OjpzZXRTdHls
ZShSZW5kZXJTdHlsZSogbmUKIAogICAgIC8vIFNldCB0aGUgdGV4dCBjb2xvciBpZiB3ZSdyZSB0
aGUgYm9keS4KICAgICBpZiAoaXNCb2R5KCkpCi0gICAgICAgIGVsZW1lbnQoKS0+ZG9jdW1lbnQo
KS0+c2V0VGV4dENvbG9yKG5ld1N0eWxlLT5jb2xvcigpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
c2V0VGV4dENvbG9yKG5ld1N0eWxlLT5jb2xvcigpKTsKIAogICAgIGlmIChzdHlsZSgpLT5vdXRs
aW5lV2lkdGgoKSA+IDAgJiYgc3R5bGUoKS0+b3V0bGluZVNpemUoKSA+IG1heGltYWxPdXRsaW5l
U2l6ZShQYWludFBoYXNlT3V0bGluZSkpCiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZXcq
Pihkb2N1bWVudCgpLT5yZW5kZXJlcigpKS0+c2V0TWF4aW1hbE91dGxpbmVTaXplKHN0eWxlKCkt
Pm91dGxpbmVTaXplKCkpOwpAQCAtNzc2LDggKzc3Niw0OSBAQCBpbnQgUmVuZGVyQm94Ojpjb250
YWluaW5nQmxvY2tXaWR0aCgpIGNvCiAgICAgcmV0dXJuIGNiLT5hdmFpbGFibGVXaWR0aCgpOwog
fQogCit2b2lkIFJlbmRlckJveDo6b2Zmc2V0VW5kZXJSZWxQb3NpdGlvbmVkSW5saW5lKFJlbmRl
ck9iamVjdCogY29udGFpbmVyLCBpbnQmIHgsIGludCYgeSkgY29uc3QKK3sKKyAgICBpZiAoIWNv
bnRhaW5lci0+aXNSZWxQb3NpdGlvbmVkKCkgfHwgIWNvbnRhaW5lci0+aXNJbmxpbmVGbG93KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdoZW4gd2UgaGF2ZSBhbiBlbmNsb3NpbmcgcmVs
cG9zaXRpb25lZCBpbmxpbmUsIHdlIG5lZWQgdG8gYWRkIGluIHRoZSBvZmZzZXQgb2YgdGhlIGZp
cnN0IGxpbmUKKyAgICAvLyBib3ggZnJvbSB0aGUgcmVzdCBvZiB0aGUgY29udGVudCwgYnV0IG9u
bHkgaW4gdGhlIGNhc2VzIHdoZXJlIHdlIGtub3cgd2UncmUgcG9zaXRpb25lZAorICAgIC8vIHJl
bGF0aXZlIHRvIHRoZSBpbmxpbmUgaXRzZWxmLgorICAgIFJlbmRlckZsb3cqIGZsb3cgPSBzdGF0
aWNfY2FzdDxSZW5kZXJGbG93Kj4oY29udGFpbmVyKTsKKyAgICBpbnQgc3g7CisgICAgaW50IHN5
OworICAgIGlmIChmbG93LT5maXJzdExpbmVCb3goKSkgeworICAgICAgICBzeCA9IGZsb3ctPmZp
cnN0TGluZUJveCgpLT54UG9zKCk7CisgICAgICAgIHN5ID0gZmxvdy0+Zmlyc3RMaW5lQm94KCkt
PnlQb3MoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzeCA9IGZsb3ctPnN0YXRpY1goKTsKKyAg
ICAgICAgc3kgPSBmbG93LT5zdGF0aWNZKCk7CisgICAgfQorCisgICAgaWYgKCFoYXNTdGF0aWNY
KCkpCisgICAgICAgIHggKz0gc3g7CisgICAgLy8gVGhpcyBpcyBub3QgdGVycmlibHkgaW50dWl0
aXZlLCBidXQgd2UgaGF2ZSB0byBtYXRjaCBvdGhlciBicm93c2Vycy4gIERlc3BpdGUgYmVpbmcg
YSBibG9jayBkaXNwbGF5IHR5cGUgaW5zaWRlCisgICAgLy8gYW4gaW5saW5lLCB3ZSBzdGlsbCBr
ZWVwIG91ciB4IGxvY2tlZCB0byB0aGUgbGVmdCBvZiB0aGUgcmVsYXRpdmUgcG9zaXRpb25lZCBp
bmxpbmUuICBBcmd1YWJseSB0aGUgY29ycmVjdAorICAgIC8vIGJlaGF2aW9yIHdvdWxkIGJlIHRv
IGdvIGZsdXNoIGxlZnQgdG8gdGhlIGJsb2NrIHRoYXQgY29udGFpbnMgdGhlIGlubGluZSwgYnV0
IHRoYXQgaXNuJ3Qgd2hhdCBvdGhlciBicm93c2VycworICAgIC8vIGRvLgorICAgIGVsc2UgaWYg
KCFzdHlsZSgpLT5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkKKyAgICAgICAgLy8gQXZv
aWQgYWRkaW5nIGluIHRoZSBsZWZ0IGJvcmRlci9wYWRkaW5nIG9mIHRoZSBjb250YWluaW5nIGJs
b2NrIHR3aWNlLiAgU3VidHJhY3QgaXQgb3V0LgorICAgICAgICB4ICs9IHN4IC0gKGNvbnRhaW5p
bmdCbG9jaygpLT5ib3JkZXJMZWZ0KCkgKyBjb250YWluaW5nQmxvY2soKS0+cGFkZGluZ0xlZnQo
KSk7CisKKyAgICBpZiAoIWhhc1N0YXRpY1koKSkKKyAgICAgICAgeSArPSBzeTsKK30KKwogYm9v
bCBSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24oaW50JiB4UG9zLCBpbnQmIHlQb3MsIGJvb2wg
Zml4ZWQpIGNvbnN0CiB7CisgICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpIHsKKyAgICAg
ICAgaWYgKExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHYtPmxheW91dFN0YXRlKCkpIHsKKyAg
ICAgICAgICAgIHhQb3MgPSBsYXlvdXRTdGF0ZS0+bV9vZmZzZXQud2lkdGgoKSArIG1feDsKKyAg
ICAgICAgICAgIHlQb3MgPSBsYXlvdXRTdGF0ZS0+bV9vZmZzZXQuaGVpZ2h0KCkgKyBtX3k7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChzdHls
ZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pCiAgICAgICAgIGZpeGVkID0gdHJ1ZTsK
IApAQCAtNzg1LDM2ICs4MjYsOSBAQCBib29sIFJlbmRlckJveDo6YWJzb2x1dGVQb3NpdGlvbihp
bnQmIHhQCiAgICAgaWYgKG8gJiYgby0+YWJzb2x1dGVQb3NpdGlvbih4UG9zLCB5UG9zLCBmaXhl
ZCkpIHsKICAgICAgICAgeVBvcyArPSBvLT5ib3JkZXJUb3BFeHRyYSgpOwogCi0gICAgICAgIGlm
IChzdHlsZSgpLT5wb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYgby0+aXNSZWxQb3Np
dGlvbmVkKCkgJiYgby0+aXNJbmxpbmVGbG93KCkpIHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2Ug
aGF2ZSBhbiBlbmNsb3NpbmcgcmVscG9zaXRpb25lZCBpbmxpbmUsIHdlIG5lZWQgdG8gYWRkIGlu
IHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGxpbmUKLSAgICAgICAgICAgIC8vIGJveCBmcm9tIHRo
ZSByZXN0IG9mIHRoZSBjb250ZW50LCBidXQgb25seSBpbiB0aGUgY2FzZXMgd2hlcmUgd2Uga25v
dyB3ZSdyZSBwb3NpdGlvbmVkCi0gICAgICAgICAgICAvLyByZWxhdGl2ZSB0byB0aGUgaW5saW5l
IGl0c2VsZi4KLSAgICAgICAgICAgIFJlbmRlckZsb3cqIGZsb3cgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJGbG93Kj4obyk7Ci0gICAgICAgICAgICBpbnQgc3g7Ci0gICAgICAgICAgICBpbnQgc3k7Ci0g
ICAgICAgICAgICBpZiAoZmxvdy0+Zmlyc3RMaW5lQm94KCkpIHsKLSAgICAgICAgICAgICAgICBz
eCA9IGZsb3ctPmZpcnN0TGluZUJveCgpLT54UG9zKCk7Ci0gICAgICAgICAgICAgICAgc3kgPSBm
bG93LT5maXJzdExpbmVCb3goKS0+eVBvcygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBzeCA9IGZsb3ctPnN0YXRpY1goKTsKLSAgICAgICAgICAgICAgICBzeSA9IGZs
b3ctPnN0YXRpY1koKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBpc0lubGlu
ZVR5cGUgPSBzdHlsZSgpLT5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKTsKLQotICAgICAg
ICAgICAgaWYgKCFoYXNTdGF0aWNYKCkpCi0gICAgICAgICAgICAgICAgeFBvcyArPSBzeDsKLSAg
ICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRlcnJpYmx5IGludHVpdGl2ZSwgYnV0IHdlIGhhdmUg
dG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMuICBEZXNwaXRlIGJlaW5nIGEgYmxvY2sgZGlzcGxheSB0
eXBlIGluc2lkZQotICAgICAgICAgICAgLy8gYW4gaW5saW5lLCB3ZSBzdGlsbCBrZWVwIG91ciB4
IGxvY2tlZCB0byB0aGUgbGVmdCBvZiB0aGUgcmVsYXRpdmUgcG9zaXRpb25lZCBpbmxpbmUuICBB
cmd1YWJseSB0aGUgY29ycmVjdAotICAgICAgICAgICAgLy8gYmVoYXZpb3Igd291bGQgYmUgdG8g
Z28gZmx1c2ggbGVmdCB0byB0aGUgYmxvY2sgdGhhdCBjb250YWlucyB0aGUgaW5saW5lLCBidXQg
dGhhdCBpc24ndCB3aGF0IG90aGVyIGJyb3dzZXJzCi0gICAgICAgICAgICAvLyBkby4KLSAgICAg
ICAgICAgIGlmIChoYXNTdGF0aWNYKCkgJiYgIWlzSW5saW5lVHlwZSkKLSAgICAgICAgICAgICAg
ICAvLyBBdm9pZCBhZGRpbmcgaW4gdGhlIGxlZnQgYm9yZGVyL3BhZGRpbmcgb2YgdGhlIGNvbnRh
aW5pbmcgYmxvY2sgdHdpY2UuICBTdWJ0cmFjdCBpdCBvdXQuCi0gICAgICAgICAgICAgICAgeFBv
cyArPSBzeCAtIChjb250YWluaW5nQmxvY2soKS0+Ym9yZGVyTGVmdCgpICsgY29udGFpbmluZ0Js
b2NrKCktPnBhZGRpbmdMZWZ0KCkpOworICAgICAgICBpZiAoc3R5bGUoKS0+cG9zaXRpb24oKSA9
PSBBYnNvbHV0ZVBvc2l0aW9uKQorICAgICAgICAgICAgb2Zmc2V0VW5kZXJSZWxQb3NpdGlvbmVk
SW5saW5lKG8sIHhQb3MsIHlQb3MpOwogCi0gICAgICAgICAgICBpZiAoIWhhc1N0YXRpY1koKSkK
LSAgICAgICAgICAgICAgICB5UG9zICs9IHN5OwotICAgICAgICB9CiAgICAgICAgIGlmIChvLT5o
YXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAgICAgIG8tPmxheWVyKCktPnN1YnRyYWN0U2Nyb2xs
T2Zmc2V0KHhQb3MsIHlQb3MpOwogCkBAIC04OTksNiArOTEzLDEwIEBAIHZvaWQgUmVuZGVyQm94
OjpkZWxldGVMaW5lQm94V3JhcHBlcigpCiBJbnRSZWN0IFJlbmRlckJveDo6YWJzb2x1dGVDbGlw
cGVkT3ZlcmZsb3dSZWN0KCkKIHsKICAgICBJbnRSZWN0IHIgPSBvdmVyZmxvd1JlY3QoZmFsc2Up
OworCisgICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpCisgICAgICAgIHIubW92ZSh2LT5s
YXlvdXREZWx0YSgpKTsKKwogICAgIGlmIChzdHlsZSgpKSB7CiAgICAgICAgIGlmIChzdHlsZSgp
LT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICAvLyBUaGUgdGhlbWUgbWF5IHdpc2ggdG8g
aW5mbGF0ZSB0aGUgcmVjdCB1c2VkIHdoZW4gcmVwYWludGluZy4KQEAgLTkxMyw2ICs5MzEsMTYg
QEAgSW50UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQ2xpcHBlZE92ZXJmbAogCiB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYgcmVjdCwgYm9vbCBmaXhl
ZCkKIHsKKyAgICBpZiAoUmVuZGVyVmlldyogdiA9IHZpZXcoKSkgeworICAgICAgICBpZiAoTGF5
b3V0U3RhdGUqIGxheW91dFN0YXRlID0gdi0+bGF5b3V0U3RhdGUoKSkgeworICAgICAgICAgICAg
cmVjdC5tb3ZlKG1feCwgbV95KTsKKyAgICAgICAgICAgIHJlY3QubW92ZShsYXlvdXRTdGF0ZS0+
bV9vZmZzZXQpOworICAgICAgICAgICAgaWYgKGxheW91dFN0YXRlLT5tX2NsaXBwZWQpCisgICAg
ICAgICAgICAgICAgcmVjdC5pbnRlcnNlY3QobGF5b3V0U3RhdGUtPm1fY2xpcFJlY3QpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgaW50IHggPSByZWN0Lngo
KSArIG1feDsKICAgICBpbnQgeSA9IHJlY3QueSgpICsgbV95OwogCkBAIC05MzksMzYgKzk2Nyw4
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmUKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigpID09IEFic29s
dXRlUG9zaXRpb24gJiYgby0+aXNSZWxQb3NpdGlvbmVkKCkgJiYgby0+aXNJbmxpbmVGbG93KCkp
IHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2UgaGF2ZSBhbiBlbmNsb3NpbmcgcmVscG9zaXRpb25l
ZCBpbmxpbmUsIHdlIG5lZWQgdG8gYWRkIGluIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGxpbmUK
LSAgICAgICAgICAgIC8vIGJveCBmcm9tIHRoZSByZXN0IG9mIHRoZSBjb250ZW50LCBidXQgb25s
eSBpbiB0aGUgY2FzZXMgd2hlcmUgd2Uga25vdyB3ZSdyZSBwb3NpdGlvbmVkCi0gICAgICAgICAg
ICAvLyByZWxhdGl2ZSB0byB0aGUgaW5saW5lIGl0c2VsZi4KLSAgICAgICAgICAgIFJlbmRlckZs
b3cqIGZsb3cgPSBzdGF0aWNfY2FzdDxSZW5kZXJGbG93Kj4obyk7Ci0gICAgICAgICAgICBpbnQg
c3g7Ci0gICAgICAgICAgICBpbnQgc3k7Ci0gICAgICAgICAgICBpZiAoZmxvdy0+Zmlyc3RMaW5l
Qm94KCkpIHsKLSAgICAgICAgICAgICAgICBzeCA9IGZsb3ctPmZpcnN0TGluZUJveCgpLT54UG9z
KCk7Ci0gICAgICAgICAgICAgICAgc3kgPSBmbG93LT5maXJzdExpbmVCb3goKS0+eVBvcygpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzeCA9IGZsb3ctPnN0YXRpY1go
KTsKLSAgICAgICAgICAgICAgICBzeSA9IGZsb3ctPnN0YXRpY1koKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgYm9vbCBpc0lubGluZVR5cGUgPSBzdHlsZSgpLT5pc09yaWdpbmFsRGlz
cGxheUlubGluZVR5cGUoKTsKLQotICAgICAgICAgICAgaWYgKCFoYXNTdGF0aWNYKCkpCi0gICAg
ICAgICAgICAgICAgeCArPSBzeDsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRlcnJpYmx5
IGludHVpdGl2ZSwgYnV0IHdlIGhhdmUgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMuICBEZXNwaXRl
IGJlaW5nIGEgYmxvY2sgZGlzcGxheSB0eXBlIGluc2lkZQotICAgICAgICAgICAgLy8gYW4gaW5s
aW5lLCB3ZSBzdGlsbCBrZWVwIG91ciB4IGxvY2tlZCB0byB0aGUgbGVmdCBvZiB0aGUgcmVsYXRp
dmUgcG9zaXRpb25lZCBpbmxpbmUuICBBcmd1YWJseSB0aGUgY29ycmVjdAotICAgICAgICAgICAg
Ly8gYmVoYXZpb3Igd291bGQgYmUgdG8gZ28gZmx1c2ggbGVmdCB0byB0aGUgYmxvY2sgdGhhdCBj
b250YWlucyB0aGUgaW5saW5lLCBidXQgdGhhdCBpc24ndCB3aGF0IG90aGVyIGJyb3dzZXJzCi0g
ICAgICAgICAgICAvLyBkby4KLSAgICAgICAgICAgIGlmIChoYXNTdGF0aWNYKCkgJiYgIWlzSW5s
aW5lVHlwZSkKLSAgICAgICAgICAgICAgICAvLyBBdm9pZCBhZGRpbmcgaW4gdGhlIGxlZnQgYm9y
ZGVyL3BhZGRpbmcgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgdHdpY2UuICBTdWJ0cmFjdCBpdCBv
dXQuCi0gICAgICAgICAgICAgICAgeCArPSBzeCAtIChjb250YWluaW5nQmxvY2soKS0+Ym9yZGVy
TGVmdCgpICsgY29udGFpbmluZ0Jsb2NrKCktPnBhZGRpbmdMZWZ0KCkpOwotCi0gICAgICAgICAg
ICBpZiAoIWhhc1N0YXRpY1koKSkKLSAgICAgICAgICAgICAgICB5ICs9IHN5OwotICAgICAgICB9
CisgICAgICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24pCisg
ICAgICAgICAgICBvZmZzZXRVbmRlclJlbFBvc2l0aW9uZWRJbmxpbmUobywgeCwgeSk7CiAKICAg
ICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSB0aGUgbGlnaHR3ZWlnaHQgY2xpcHBpbmcgcmVjdCB0
aGF0IGNvbnRyb2xzIHVzZSwgc2luY2UgaWYgfG98IGlzIGluIG1pZC1sYXlvdXQsCiAgICAgICAg
IC8vIGl0cyBjb250cm9sQ2xpcFJlY3Qgd2lsbCBiZSB3cm9uZy4gRm9yIG92ZXJmbG93IGNsaXAg
d2UgdXNlIHRoZSB2YWx1ZXMgY2FjaGVkIGJ5IHRoZSBsYXllci4KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
SW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSk7
CisgICAgdm9pZCBvZmZzZXRVbmRlclJlbFBvc2l0aW9uZWRJbmxpbmUoUmVuZGVyT2JqZWN0Kiwg
aW50JiB4LCBpbnQmIHkpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdM
YXlvdXRJZk1vdmVkKGNvbnN0IEludFJlY3QmKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb250YWluZXIuY3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSwxMiArNDgxLDE2IEBAIHZv
aWQgUmVuZGVyQ29udGFpbmVyOjpsYXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgp
KTsKIAorICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94LCBtX3kp
KTsKKwogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBtX2ZpcnN0Q2hpbGQ7CiAgICAgd2hpbGUg
KGNoaWxkKSB7CiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICBBU1NF
UlQoY2hpbGQtPmlzUmVuZGVySW5saW5lKCkgfHwgIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKICAg
ICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CisKKyAgICB2aWV3KCkt
PnBvcExheW91dFN0YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyMTE2NykK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA4LDI1ICsyMDgsMTkgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0Qmxv
Y2soYm9vbAogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKIAotICAgIGlmICghcmVsYXlv
dXRDaGlsZHJlbiAmJiBwb3NDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxkTmVlZHNM
YXlvdXQoKSAmJiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgLy8gQWxsIHdlIGhhdmUg
dG8gaXMgbGF5IG91dCBvdXIgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlvdXRQb3Np
dGlvbmVkT2JqZWN0cyhmYWxzZSk7Ci0gICAgICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKLSAg
ICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwotICAgICAg
ICBzZXROZWVkc0xheW91dChmYWxzZSk7CisgICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYmIGxh
eW91dE9ubHlQb3NpdGlvbmVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAg
ICAgSW50UmVjdCBvbGRCb3VuZHM7CiAgICAgSW50UmVjdCBvbGRPdXRsaW5lQm94OwogICAgIGJv
b2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7CiAgICAg
aWYgKGNoZWNrRm9yUmVwYWludCkgewogICAgICAgICBvbGRCb3VuZHMgPSBhYnNvbHV0ZUNsaXBw
ZWRPdmVyZmxvd1JlY3QoKTsKLSAgICAgICAgb2xkQm91bmRzLm1vdmUodmlldygpLT5sYXlvdXRE
ZWx0YSgpKTsKICAgICAgICAgb2xkT3V0bGluZUJveCA9IGFic29sdXRlT3V0bGluZUJveCgpOwot
ICAgICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5sYXlvdXREZWx0YSgpKTsKICAgICB9
CiAKKyAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7
CisKICAgICBpbnQgcHJldmlvdXNXaWR0aCA9IG1fd2lkdGg7CiAgICAgaW50IHByZXZpb3VzSGVp
Z2h0ID0gbV9oZWlnaHQ7CiAgICAgCkBAIC0yOTQsNiArMjg4LDggQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbAogICAgIGlmIChtX292ZXJmbG93V2lkdGggPCBtX3dp
ZHRoKQogICAgICAgICBtX292ZXJmbG93V2lkdGggPSBtX3dpZHRoOwogCisgICAgdmlldygpLT5w
b3BMYXlvdXRTdGF0ZSgpOworCiAgICAgLy8gVXBkYXRlIG91ciBzY3JvbGxiYXJzIGlmIHdlJ3Jl
IG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBub3cgdGhhdCB3ZSBrbm93IGlmCiAgICAgLy8g
d2Ugb3ZlcmZsb3cgb3Igbm90LgogICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3cuY3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsNiArNDUwLDkgQEAgYm9v
bCBSZW5kZXJGbG93OjpoaXRUZXN0TGluZXMoY29uc3QgSGl0VAogSW50UmVjdCBSZW5kZXJGbG93
OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQogewogICAgIGlmIChpc0lubGluZUZsb3co
KSkgeworICAgICAgICAvLyBPbmx5IGNvbXBhY3RzIGFuZCBydW4taW5zIGFyZSBhbGxvd2VkIGlu
IGhlcmUgZHVyaW5nIGxheW91dC4KKyAgICAgICAgQVNTRVJUKCF2aWV3KCkgfHwgIXZpZXcoKS0+
bGF5b3V0U3RhdGUoKSB8fCBpc0NvbXBhY3QoKSB8fCBpc1J1bkluKCkpOworCiAgICAgICAgIGlm
ICghZmlyc3RMaW5lQm94KCkpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkocmV2aXNpb24gMjEx
NjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNiArODYsOSBAQCB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OmxheW91
dCgpCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCisgICAgLy8gQXJiaXRyYXJ5IGFm
ZmluZSB0cmFuc2Zvcm1zIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBMYXlvdXRTdGF0ZS4KKyAgICB2
aWV3KCktPmRpc2FibGVMYXlvdXRTdGF0ZSgpOworCiAgICAgSW50UmVjdCBvbGRCb3VuZHM7CiAg
ICAgSW50UmVjdCBvbGRPdXRsaW5lQm94OwogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hl
Y2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7CkBAIC0xMDEsNiArMTA0LDcgQEAgdm9pZCBSZW5k
ZXJGb3JlaWduT2JqZWN0OjpsYXlvdXQoKQogICAgIGlmIChjaGVja0ZvclJlcGFpbnQpCiAgICAg
ICAgIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKG9sZEJvdW5kcywgb2xkT3V0bGluZUJveCk7
CiAKKyAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlvdXQo
ZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAko
cmV2aXNpb24gMjExNjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODUsOSArODUsNyBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6
OmxheW91dCgpCiAgICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVja0ZvclJlcGFpbnREdXJp
bmdMYXlvdXQoKTsKICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KSB7CiAgICAgICAgIG9sZEJvdW5k
cyA9IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwotICAgICAgICBvbGRCb3VuZHMubW92
ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgICAgICBvbGRPdXRsaW5lQm94ID0gYWJzb2x1
dGVPdXRsaW5lQm94KCk7Ci0gICAgICAgIG9sZE91dGxpbmVCb3gubW92ZSh2aWV3KCktPmxheW91
dERlbHRhKCkpOwogICAgIH0KICAgICBjYWxjV2lkdGgoKTsKICAgICBjYWxjSGVpZ2h0KCk7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDkgKzMw
OSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiAgICAgYm9vbCBjaGVja0ZvclJlcGFp
bnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKICAgICBpZiAoY2hlY2tGb3JSZXBh
aW50KSB7CiAgICAgICAgIG9sZEJvdW5kcyA9IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgp
OwotICAgICAgICBvbGRCb3VuZHMubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgICAg
ICBvbGRPdXRsaW5lQm94ID0gYWJzb2x1dGVPdXRsaW5lQm94KCk7Ci0gICAgICAgIG9sZE91dGxp
bmVCb3gubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgIH0KIAogICAgIC8vIG1pbmlt
dW0gaGVpZ2h0CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMTE2
NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk5LDExICsxOTksMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlv
bnMoYgogICAgIHVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoKTsKICAgICAgICAgCiAgICAgaWYgKG1f
aGFzVmlzaWJsZUNvbnRlbnQpIHsKKyAgICAgICAgUmVuZGVyVmlldyogdmlldyA9IG1fb2JqZWN0
LT52aWV3KCk7CisgICAgICAgIEFTU0VSVCh2aWV3KTsKKyAgICAgICAgLy8gRklYTUU6IE9wdGlt
aXplIHVzaW5nIExheXVvdFN0YXRlIGFuZCByZW1vdmUgdGhlIGRpc2FibGVMYXlvdXRTdGF0ZSgp
IGNhbGwKKyAgICAgICAgLy8gZnJvbSB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKS4KKyAg
ICAgICAgQVNTRVJUKCF2aWV3LT5sYXlvdXRTdGF0ZSgpKTsKKwogICAgICAgICBJbnRSZWN0IG5l
d1JlY3QgPSBtX29iamVjdC0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CiAgICAgICAg
IEludFJlY3QgbmV3T3V0bGluZUJveCA9IG1fb2JqZWN0LT5hYnNvbHV0ZU91dGxpbmVCb3goKTsK
ICAgICAgICAgaWYgKGNoZWNrRm9yUmVwYWludCkgewotICAgICAgICAgICAgUmVuZGVyVmlldyog
dmlldyA9IG1fb2JqZWN0LT52aWV3KCk7Ci0gICAgICAgICAgICBBU1NFUlQodmlldyk7CiAgICAg
ICAgICAgICBpZiAodmlldyAmJiAhdmlldy0+cHJpbnRpbmcoKSkgewogICAgICAgICAgICAgICAg
IGJvb2wgZGlkTW92ZSA9IG5ld091dGxpbmVCb3gubG9jYXRpb24oKSAhPSBtX291dGxpbmVCb3gu
bG9jYXRpb24oKTsKICAgICAgICAgICAgICAgICBpZiAoIWRpZE1vdmUgJiYgIW1fcmVwYWludE92
ZXJmbG93T25SZXNpemUpCkBAIC0zNTcsMzkgKzM2MSw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZUxheWVyUG9zaXRpb24oKQogICAgICAgICAvLyBGb3IgcG9zaXRpb25lZCBsYXllcnMsIHdl
IHN1YnRyYWN0IG91dCB0aGUgZW5jbG9zaW5nIHBvc2l0aW9uZWQgbGF5ZXIncyBzY3JvbGwgb2Zm
c2V0LgogICAgICAgICBwb3NpdGlvbmVkUGFyZW50LT5zdWJ0cmFjdFNjcm9sbE9mZnNldCh4LCB5
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNQb3NpdGlvbmVkKCkgJiYgcG9z
aXRpb25lZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlvbmVkKCkgJiYKLSAgICAgICAg
ICAgIHBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCktPmlzSW5saW5lRmxvdygpKSB7Ci0gICAg
ICAgICAgICAvLyBXaGVuIHdlIGhhdmUgYW4gZW5jbG9zaW5nIHJlbHBvc2l0aW9uZWQgaW5saW5l
LCB3ZSBuZWVkIHRvIGFkZCBpbiB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBsaW5lCi0gICAgICAg
ICAgICAvLyBib3ggZnJvbSB0aGUgcmVzdCBvZiB0aGUgY29udGVudCwgYnV0IG9ubHkgaW4gdGhl
IGNhc2VzIHdoZXJlIHdlIGtub3cgd2UncmUgcG9zaXRpb25lZAotICAgICAgICAgICAgLy8gcmVs
YXRpdmUgdG8gdGhlIGlubGluZSBpdHNlbGYuCi0gICAgICAgICAgICBSZW5kZXJGbG93KiBmbG93
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyRmxvdyo+KHBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCkp
OwotICAgICAgICAgICAgaW50IHN4ID0gMCwgc3kgPSAwOwotICAgICAgICAgICAgaWYgKGZsb3ct
PmZpcnN0TGluZUJveCgpKSB7Ci0gICAgICAgICAgICAgICAgc3ggPSBmbG93LT5maXJzdExpbmVC
b3goKS0+eFBvcygpOwotICAgICAgICAgICAgICAgIHN5ID0gZmxvdy0+Zmlyc3RMaW5lQm94KCkt
PnlQb3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIHN4ID0gZmxvdy0+c3RhdGljWCgpOwotICAgICAgICAgICAgICAgIHN5ID0gZmxvdy0+c3Rh
dGljWSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBpc0lubGluZVR5cGUgPSBt
X29iamVjdC0+c3R5bGUoKS0+aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICghbV9vYmplY3QtPmhhc1N0YXRpY1goKSkKLSAgICAgICAg
ICAgICAgICB4ICs9IHN4OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBUaGlzIGlzIG5v
dCB0ZXJyaWJseSBpbnR1aXRpdmUsIGJ1dCB3ZSBoYXZlIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJz
LiAgRGVzcGl0ZSBiZWluZyBhIGJsb2NrIGRpc3BsYXkgdHlwZSBpbnNpZGUKLSAgICAgICAgICAg
IC8vIGFuIGlubGluZSwgd2Ugc3RpbGwga2VlcCBvdXIgeCBsb2NrZWQgdG8gdGhlIGxlZnQgb2Yg
dGhlIHJlbGF0aXZlIHBvc2l0aW9uZWQgaW5saW5lLiAgQXJndWFibHkgdGhlIGNvcnJlY3QKLSAg
ICAgICAgICAgIC8vIGJlaGF2aW9yIHdvdWxkIGJlIHRvIGdvIGZsdXNoIGxlZnQgdG8gdGhlIGJs
b2NrIHRoYXQgY29udGFpbnMgdGhlIGlubGluZSwgYnV0IHRoYXQgaXNuJ3Qgd2hhdCBvdGhlciBi
cm93c2VycwotICAgICAgICAgICAgLy8gZG8uCi0gICAgICAgICAgICBpZiAobV9vYmplY3QtPmhh
c1N0YXRpY1goKSAmJiAhaXNJbmxpbmVUeXBlKQotICAgICAgICAgICAgICAgIC8vIEF2b2lkIGFk
ZGluZyBpbiB0aGUgbGVmdCBib3JkZXIvcGFkZGluZyBvZiB0aGUgY29udGFpbmluZyBibG9jayB0
d2ljZS4gIFN1YnRyYWN0IGl0IG91dC4KLSAgICAgICAgICAgICAgICB4ICs9IHN4IC0gKG1fb2Jq
ZWN0LT5jb250YWluaW5nQmxvY2soKS0+Ym9yZGVyTGVmdCgpICsgbV9vYmplY3QtPmNvbnRhaW5p
bmdCbG9jaygpLT5wYWRkaW5nTGVmdCgpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KCFtX29iamVjdC0+aGFzU3RhdGljWSgpKQotICAgICAgICAgICAgICAgIHkgKz0gc3k7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAocGFyZW50KCkpCisgICAgICAgIGlmIChtX29iamVj
dC0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJCb3gqPiht
X29iamVjdCktPm9mZnNldFVuZGVyUmVsUG9zaXRpb25lZElubGluZShwb3NpdGlvbmVkUGFyZW50
LT5yZW5kZXJlcigpLCB4LCB5KTsKKyAgICB9IGVsc2UgaWYgKHBhcmVudCgpKQogICAgICAgICBw
YXJlbnQoKS0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeCwgeSk7CiAgICAgCiAgICAgc2V0UG9zKHgs
eSk7CkBAIC0xMTgzLDggKzExNTcsMTggQEAgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9B
ZnRlckxheW91dAogICAgICAgICAvLyB0byBwdWxsIG91ciBzY3JvbGwgb2Zmc2V0cyBiYWNrIHRv
IHRoZSBtYXggKG9yIHB1c2ggdGhlbSB1cCB0byB0aGUgbWluKS4KICAgICAgICAgaW50IG5ld1gg
PSBtYXgoMCwgbWluKHNjcm9sbFhPZmZzZXQoKSwgc2Nyb2xsV2lkdGgoKSAtIG1fb2JqZWN0LT5j
bGllbnRXaWR0aCgpKSk7CiAgICAgICAgIGludCBuZXdZID0gbWF4KDAsIG1pbihtX3Njcm9sbFks
IHNjcm9sbEhlaWdodCgpIC0gbV9vYmplY3QtPmNsaWVudEhlaWdodCgpKSk7Ci0gICAgICAgIGlm
IChuZXdYICE9IHNjcm9sbFhPZmZzZXQoKSB8fCBuZXdZICE9IG1fc2Nyb2xsWSkKKyAgICAgICAg
aWYgKG5ld1ggIT0gc2Nyb2xsWE9mZnNldCgpIHx8IG5ld1kgIT0gbV9zY3JvbGxZKSB7CisgICAg
ICAgICAgICBSZW5kZXJWaWV3KiB2aWV3ID0gbV9vYmplY3QtPnZpZXcoKTsKKyAgICAgICAgICAg
IEFTU0VSVCh2aWV3KTsKKyAgICAgICAgICAgIC8vIHNjcm9sbFRvT2Zmc2V0KCkgbWF5IGNhbGwg
dXBkYXRlTGF5ZXJQb3NpdGlvbnMoKSwgd2hpY2ggZG9lc24ndCB3b3JrCisgICAgICAgICAgICAv
LyB3aXRoIExheW91dFN0YXRlLgorICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgZGlz
YWJsZUxheW91dFN0YXRlL2VuYWJsZUxheW91dFN0YXRlIGlmIHRoZSBhYm92ZSBjaGFuZ2VzLgor
ICAgICAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICAgICAgdmlldy0+ZGlzYWJsZUxheW91
dFN0YXRlKCk7CiAgICAgICAgICAgICBzY3JvbGxUb09mZnNldChuZXdYLCBuZXdZKTsKKyAgICAg
ICAgICAgIGlmICh2aWV3KQorICAgICAgICAgICAgICAgIHZpZXctPmVuYWJsZUxheW91dFN0YXRl
KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGhhdmVIb3Jpem9udGFsQmFyID0gbV9o
QmFyOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gMjEx
NjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MT0xpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtlci5oIgorI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMjAwLDYgKzIw
MSw5IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OnVwZGF0ZU1hcmtlckxvY2F0aW8KICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtYXJrZXJQYXIgIT0gbGluZUJveFBhcmVudCB8fCBtX21hcmtlci0+
cHJlZldpZHRoc0RpcnR5KCkpIHsKKyAgICAgICAgICAgIC8vIFJlbW92aW5nIGFuZCBhZGRpbmcg
dGhlIG1hcmtlciBjYW4gdHJpZ2dlciByZXBhaW50aW5nIGluCisgICAgICAgICAgICAvLyBjb250
YWluZXJzIG90aGVyIHRoYW4gb3Vyc2VsdmVzLCBzbyB3ZSBuZWVkIHRvIGRpc2FibGUgTGF5b3V0
U3RhdGUuCisgICAgICAgICAgICB2aWV3KCktPmRpc2FibGVMYXlvdXRTdGF0ZSgpOwogICAgICAg
ICAgICAgdXBkYXRlRmlyc3RMZXR0ZXIoKTsKICAgICAgICAgICAgIG1fbWFya2VyLT5yZW1vdmUo
KTsKICAgICAgICAgICAgIGlmICghbGluZUJveFBhcmVudCkKQEAgLTIwNyw2ICsyMTEsNyBAQCB2
b2lkIFJlbmRlckxpc3RJdGVtOjp1cGRhdGVNYXJrZXJMb2NhdGlvCiAgICAgICAgICAgICBsaW5l
Qm94UGFyZW50LT5hZGRDaGlsZChtX21hcmtlciwgZmlyc3ROb25NYXJrZXJDaGlsZChsaW5lQm94
UGFyZW50KSk7CiAgICAgICAgICAgICBpZiAobV9tYXJrZXItPnByZWZXaWR0aHNEaXJ0eSgpKQog
ICAgICAgICAgICAgICAgIG1fbWFya2VyLT5jYWxjUHJlZldpZHRocygpOworICAgICAgICAgICAg
dmlldygpLT5lbmFibGVMYXlvdXRTdGF0ZSgpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQs
NyBAQCBib29sIFJlbmRlck9iamVjdDo6aXNEZXNjZW5kYW50T2YoY29uc3QgCiAKIGJvb2wgUmVu
ZGVyT2JqZWN0Ojppc1Jvb3QoKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50KCkgJiYgZWxl
bWVudCgpLT5yZW5kZXJlcigpID09IHRoaXMgJiYgZWxlbWVudCgpLT5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSA9PSBlbGVtZW50KCk7CisgICAgcmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVt
ZW50KCktPnJlbmRlcmVyKCkgPT0gdGhpcyAmJiBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KSA9PSBlbGVtZW50KCk7CiB9CiAKIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0JvZHkoKSBjb25zdApA
QCAtMTg5Myw3ICsxODkzLDcgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQ2xpcHBl
ZE92ZQogdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJl
Y3QmIHIsIGJvb2wgZikKIHsKICAgICBpZiAocGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJl
bnQoKS0+Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QociwgZik7CisgICAgICAgIHBhcmVudCgp
LT5jb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChyLCBmKTsKIH0KIAogdm9pZCBSZW5kZXJPYmpl
Y3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQpCkBAIC0y
NDIxLDggKzI0MjEsMTIgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lcigp
IAogICAgIC8vIHRoZSBsYXlvdXQgb2YgdGhlIHBvc2l0aW9uZWQgb2JqZWN0LiAgVGhpcyBkb2Vz
IG1lYW4gdGhhdCBjYWxjQWJzb2x1dGVIb3Jpem9udGFsIGFuZAogICAgIC8vIGNhbGNBYnNvbHV0
ZVZlcnRpY2FsIGhhdmUgdG8gdXNlIGNvbnRhaW5lcigpLgogICAgIFJlbmRlck9iamVjdCogbyA9
IHBhcmVudCgpOworCisgICAgaWYgKGlzVGV4dCgpKQorICAgICAgICByZXR1cm4gbzsKKwogICAg
IEVQb3NpdGlvbiBwb3MgPSBtX3N0eWxlLT5wb3NpdGlvbigpOwotICAgIGlmICghaXNUZXh0KCkg
JiYgcG9zID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICBpZiAocG9zID09IEZpeGVkUG9zaXRpb24p
IHsKICAgICAgICAgLy8gY29udGFpbmVyKCkgY2FuIGJlIGNhbGxlZCBvbiBhbiBvYmplY3QgdGhh
dCBpcyBub3QgaW4gdGhlCiAgICAgICAgIC8vIHRyZWUgeWV0LiAgV2UgZG9uJ3QgY2FsbCB2aWV3
KCkgc2luY2UgaXQgd2lsbCBhc3NlcnQgaWYgaXQKICAgICAgICAgLy8gY2FuJ3QgZ2V0IGJhY2sg
dG8gdGhlIGNhbnZhcy4gIEluc3RlYWQgd2UganVzdCB3YWxrIGFzIGhpZ2ggdXAKQEAgLTI0MzEs
NyArMjQzNSw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoKSAKICAg
ICAgICAgLy8gd2UnbGwganVzdCByZXR1cm4gMCkuCiAgICAgICAgIHdoaWxlIChvICYmIG8tPnBh
cmVudCgpKQogICAgICAgICAgICAgbyA9IG8tPnBhcmVudCgpOwotICAgIH0gZWxzZSBpZiAoIWlz
VGV4dCgpICYmIHBvcyA9PSBBYnNvbHV0ZVBvc2l0aW9uKSB7CisgICAgfSBlbHNlIGlmIChwb3Mg
PT0gQWJzb2x1dGVQb3NpdGlvbikgewogICAgICAgICAvLyBTYW1lIGdvZXMgaGVyZS4gIFdlIHRl
Y2huaWNhbGx5IGp1c3Qgd2FudCBvdXIgY29udGFpbmluZyBibG9jaywgYnV0CiAgICAgICAgIC8v
IHdlIG1heSBub3QgaGF2ZSBvbmUgaWYgd2UncmUgcGFydCBvZiBhbiB1bmluc3RhbGxlZCBzdWJ0
cmVlLiAgV2UnbGwKICAgICAgICAgLy8gY2xpbWIgYXMgaGlnaCBhcyB3ZSBjYW4gdGhvdWdoLgpA
QCAtMzAyNSw2ICszMDI5LDcgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlT3V0bGlu
ZUJveAogICAgIGludCB4LCB5OwogICAgIGFic29sdXRlUG9zaXRpb24oeCwgeSk7CiAgICAgYm94
Lm1vdmUoeCwgeSk7CisgICAgYm94Lm1vdmUodmlldygpLT5sYXlvdXREZWx0YSgpKTsKICAgICBi
b3guaW5mbGF0ZShzdHlsZSgpLT5vdXRsaW5lU2l6ZSgpKTsKICAgICByZXR1cm4gYm94OwogfQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAy
MTE2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIu
aCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdNYXJrZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCkBAIC05MSw2ICs5Miw5IEBAIHZvaWQg
UmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogCiAgICAgY2FsY1ZpZXdwb3J0KCk7CiAKKyAg
ICAvLyBBcmJpdHJhcnkgYWZmaW5lIHRyYW5zZm9ybXMgYXJlIGluY29tcGF0aWJsZSB3aXRoIExh
eW91dFN0YXRlLgorICAgIHZpZXcoKS0+ZGlzYWJsZUxheW91dFN0YXRlKCk7CisKICAgICBJbnRS
ZWN0IG9sZEJvdW5kczsKICAgICBJbnRSZWN0IG9sZE91dGxpbmVCb3g7CiAgICAgYm9vbCBjaGVj
a0ZvclJlcGFpbnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKQEAgLTExNyw2ICsx
MjEsNyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKICAgICBpZiAoc2VsZk5l
ZWRzTGF5b3V0KCkgJiYgY2hlY2tGb3JSZXBhaW50KQogICAgICAgICByZXBhaW50QWZ0ZXJMYXlv
dXRJZk5lZWRlZChvbGRCb3VuZHMsIG9sZE91dGxpbmVCb3gpOwogCisgICAgdmlldygpLT5lbmFi
bGVMYXlvdXRTdGF0ZSgpOwogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gMjExNjcpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJGaXhlZFRhYmxlTGF5b3V0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNvbC5oIgogI2luY2x1
ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgpAQCAtMjY1LDEyICsyNjYsOCBAQCB2b2lkIFJlbmRl
clRhYmxlOjpsYXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKIAotICAgIGlm
IChwb3NDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxkTmVlZHNMYXlvdXQoKSAmJiAh
c2VsZk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgLy8gQWxsIHdlIGhhdmUgdG8gZG8gaXMgbGF5
IG91dCBvdXIgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlvdXRQb3NpdGlvbmVkT2Jq
ZWN0cyhmYWxzZSk7Ci0gICAgICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKKyAgICBpZiAobGF5
b3V0T25seVBvc2l0aW9uZWRPYmplY3RzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAg
ICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAgICAgICAgIApAQCAtMjc5LDExICsyNzYsMTEg
QEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICBib29sIGNoZWNrRm9yUmVwYWludCA9
IGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpOwogICAgIGlmIChjaGVja0ZvclJlcGFpbnQp
IHsKICAgICAgICAgb2xkQm91bmRzID0gYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7Ci0g
ICAgICAgIG9sZEJvdW5kcy5tb3ZlKHZpZXcoKS0+bGF5b3V0RGVsdGEoKSk7CiAgICAgICAgIG9s
ZE91dGxpbmVCb3ggPSBhYnNvbHV0ZU91dGxpbmVCb3goKTsKLSAgICAgICAgb2xkT3V0bGluZUJv
eC5tb3ZlKHZpZXcoKS0+bGF5b3V0RGVsdGEoKSk7CiAgICAgfQogICAgIAorICAgIHZpZXcoKS0+
cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94LCBtX3kpKTsKKwogICAgIG1faGVpZ2h0
ID0gMDsKICAgICBtX292ZXJmbG93SGVpZ2h0ID0gMDsKICAgICBtX292ZXJmbG93VG9wID0gMDsK
QEAgLTQyNCw2ICs0MjEsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgIC8vIEZJ
WE1FOiBPbmx5IHBhc3MgdHJ1ZSBpZiB3aWR0aCBvciBoZWlnaHQgY2hhbmdlZC4KICAgICBsYXlv
dXRQb3NpdGlvbmVkT2JqZWN0cyh0cnVlKTsKIAorICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUo
KTsKKwogICAgIGJvb2wgZGlkRnVsbFJlcGFpbnQgPSB0cnVlOwogICAgIC8vIFJlcGFpbnQgd2l0
aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSBvdXIgb2xkIGJvdW5k
cy4KICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuY3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlclRhYmxlQ29sLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE3NSw2ICsxNzYsMTAg
QEAgSW50UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmFic29sdXRlQ2xpcHBlZAogICAgICAgICBsZWZ0
ID0gbWF4KGxlZnQsIC1vdmVyZmxvd0xlZnQoZmFsc2UpKTsKICAgICAgICAgdG9wID0gbWF4KHRv
cCwgLW92ZXJmbG93VG9wKGZhbHNlKSAtIGJvcmRlclRvcEV4dHJhKCkpOwogICAgICAgICBJbnRS
ZWN0IHIoLWxlZnQsIC1ib3JkZXJUb3BFeHRyYSgpIC0gdG9wLCBsZWZ0ICsgbWF4KHdpZHRoKCkg
KyByaWdodCwgb3ZlcmZsb3dXaWR0aChmYWxzZSkpLCBib3JkZXJUb3BFeHRyYSgpICsgdG9wICsg
bWF4KGhlaWdodCgpICsgYm90dG9tICsgYm9yZGVyQm90dG9tRXh0cmEoKSwgb3ZlcmZsb3dIZWln
aHQoZmFsc2UpKSk7CisKKyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpCisgICAg
ICAgICAgICByLm1vdmUodi0+bGF5b3V0RGVsdGEoKSk7CisKICAgICAgICAgY29tcHV0ZUFic29s
dXRlUmVwYWludFJlY3Qocik7CiAgICAgICAgIHJldHVybiByOwogICAgIH0KQEAgLTE4NCwxNSAr
MTg5LDIwIEBAIEludFJlY3QgUmVuZGVyVGFibGVDZWxsOjphYnNvbHV0ZUNsaXBwZWQKIHZvaWQg
UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBi
b29sIGZpeGVkKQogewogICAgIHIuc2V0WShyLnkoKSArIG1fdG9wRXh0cmEpOwotICAgIHIubW92
ZSgtcGFyZW50KCktPnhQb3MoKSwgLXBhcmVudCgpLT55UG9zKCkpOyAvLyBSb3dzIGFyZSBpbiB0
aGUgc2FtZSBjb29yZGluYXRlIHNwYWNlLCBzbyBkb24ndCBhZGQgdGhlaXIgb2Zmc2V0IGluLgor
ICAgIFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7CisgICAgaWYgKCF2IHx8ICF2LT5sYXlvdXRTdGF0
ZSgpKQorICAgICAgICByLm1vdmUoLXBhcmVudCgpLT54UG9zKCksIC1wYXJlbnQoKS0+eVBvcygp
KTsgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwgc28gZG9uJ3QgYWRk
IHRoZWlyIG9mZnNldCBpbi4KICAgICBSZW5kZXJCbG9jazo6Y29tcHV0ZUFic29sdXRlUmVwYWlu
dFJlY3QociwgZml4ZWQpOwogfQogCiBib29sIFJlbmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVQb3Np
dGlvbihpbnQmIHhQb3MsIGludCYgeVBvcywgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBib29s
IHJlc3VsdCA9IFJlbmRlckJsb2NrOjphYnNvbHV0ZVBvc2l0aW9uKHhQb3MsIHlQb3MsIGZpeGVk
KTsKLSAgICB4UG9zIC09IHBhcmVudCgpLT54UG9zKCk7IC8vIFJvd3MgYXJlIGluIHRoZSBzYW1l
IGNvb3JkaW5hdGUgc3BhY2UsIHNvIGRvbid0IGFkZCB0aGVpciBvZmZzZXQgaW4uCi0gICAgeVBv
cyAtPSBwYXJlbnQoKS0+eVBvcygpOworICAgIFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7CisgICAg
aWYgKCF2IHx8ICF2LT5sYXlvdXRTdGF0ZSgpKSB7CisgICAgICAgIHhQb3MgLT0gcGFyZW50KCkt
PnhQb3MoKTsgLy8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwgc28gZG9u
J3QgYWRkIHRoZWlyIG9mZnNldCBpbi4KKyAgICAgICAgeVBvcyAtPSBwYXJlbnQoKS0+eVBvcygp
OworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTExMyw2ICsxMTQsOSBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpsYXlvdXQoKQog
ewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKIAorICAgIC8vIFRhYmxlIHJvd3MgZG8gbm90
IGFkZCB0cmFuc2xhdGlvbi4KKyAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRT
aXplKCkpOworCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQt
PmlzVGFibGVDZWxsKCkpIHsKICAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IHN0
YXRpY19jYXN0PFJlbmRlclRhYmxlQ2VsbCo+KGNoaWxkKTsKQEAgLTEyMiw2ICsxMjYsOCBAQCB2
b2lkIFJlbmRlclRhYmxlUm93OjpsYXlvdXQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQorCisgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOwogICAgIHNldE5lZWRzTGF5b3V0
KGZhbHNlKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNvbC5oIgogI2luY2x1ZGUgIlJl
bmRlclRhYmxlUm93LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
MjYzLDYgKzI2NCw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjphZGRDZWxsKFJlbmRlclQK
IHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDZWxsV2lkdGhzKCkKIHsKICAgICBWZWN0b3I8
aW50PiYgY29sdW1uUG9zID0gdGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKCk7CisgICAgYm9vbCBw
dXNoZWRMYXlvdXRTdGF0ZSA9IGZhbHNlOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2dy
aWRSb3dzOyBpKyspIHsKICAgICAgICAgUm93JiByb3cgPSAqbV9ncmlkW2ldLnJvdzsKQEAgLTI4
MywxMiArMjg1LDIyIEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDZWxsV2lkdGhzKCkK
ICAgICAgICAgICAgIGludCBvbGRXaWR0aCA9IGNlbGwtPndpZHRoKCk7CiAgICAgICAgICAgICBp
ZiAodyAhPSBvbGRXaWR0aCkgewogICAgICAgICAgICAgICAgIGNlbGwtPnNldE5lZWRzTGF5b3V0
KHRydWUpOwotICAgICAgICAgICAgICAgIGlmICghdGFibGUoKS0+c2VsZk5lZWRzTGF5b3V0KCkg
JiYgY2VsbC0+Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkpCisgICAgICAgICAgICAgICAg
aWYgKCF0YWJsZSgpLT5zZWxmTmVlZHNMYXlvdXQoKSAmJiBjZWxsLT5jaGVja0ZvclJlcGFpbnRE
dXJpbmdMYXlvdXQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXB1c2hlZExheW91dFN0
YXRlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUZWNobmljYWxseSwgd2Ugc2hvdWxk
IGFsc28gcHVzaCBzdGF0ZSBmb3IgdGhlIHJvdywgYnV0IHNpbmNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyByb3dzIGRvbid0IHB1c2ggYSBjb29yZGluYXRlIHRyYW5zZm9ybSwgdGhhdCdz
IG5vdCBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgICAgICAgICB2aWV3KCktPnB1c2hMYXlv
dXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoZWRMYXlvdXRTdGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgY2VsbC0+cmVwYWludCgpOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBjZWxsLT5zZXRXaWR0aCh3KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KKyAgICAKKyAgICBpZiAocHVzaGVkTGF5b3V0U3RhdGUpCisgICAgICAgIHZpZXcoKS0+
cG9wTGF5b3V0U3RhdGUoKTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dI
ZWlnaHQoKQpAQCAtMjk2LDYgKzMwOCw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWxj
Um93SGVpZ2h0KCkKICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGw7CiAKICAgICBpbnQgc3BhY2lu
ZyA9IHRhYmxlKCktPnZCb3JkZXJTcGFjaW5nKCk7CisgICAgYm9vbCBwdXNoZWRMYXlvdXRTdGF0
ZSA9IGZhbHNlOwogCiAgICAgbV9yb3dQb3MucmVzaXplKG1fZ3JpZFJvd3MgKyAxKTsKICAgICBt
X3Jvd1Bvc1swXSA9IHNwYWNpbmc7CkBAIC0zMjQsNiArMzM3LDEyIEBAIHZvaWQgUmVuZGVyVGFi
bGVTZWN0aW9uOjpjYWxjUm93SGVpZ2h0KCkKICAgICAgICAgICAgIGludCBpbmR4ID0gbWF4KHIg
LSBjZWxsLT5yb3dTcGFuKCkgKyAxLCAwKTsKIAogICAgICAgICAgICAgaWYgKGNlbGwtPm92ZXJy
aWRlU2l6ZSgpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwdXNoZWRMYXlvdXRTdGF0
ZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUZWNobmljYWxseSwgd2Ugc2hvdWxkIGFsc28g
cHVzaCBzdGF0ZSBmb3IgdGhlIHJvdywgYnV0IHNpbmNlCisgICAgICAgICAgICAgICAgICAgIC8v
IHJvd3MgZG9uJ3QgcHVzaCBhIGNvb3JkaW5hdGUgdHJhbnNmb3JtLCB0aGF0J3Mgbm90IG5lY2Vz
c2FyeS4KKyAgICAgICAgICAgICAgICAgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywg
SW50U2l6ZShtX3gsIG1feSkpOworICAgICAgICAgICAgICAgICAgICBwdXNoZWRMYXlvdXRTdGF0
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNlbGwtPnNldE92
ZXJyaWRlU2l6ZSgtMSk7CiAgICAgICAgICAgICAgICAgY2VsbC0+c2V0Q2hpbGROZWVkc0xheW91
dCh0cnVlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgY2VsbC0+bGF5b3V0SWZOZWVkZWQoKTsK
QEAgLTM2MCw2ICszNzksOSBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdo
dCgpCiAKICAgICAgICAgbV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9zW3IgKyAxXSwgbV9y
b3dQb3Nbcl0pOwogICAgIH0KKworICAgIGlmIChwdXNoZWRMYXlvdXRTdGF0ZSkKKyAgICAgICAg
dmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOwogfQogCiBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjps
YXlvdXRSb3dzKGludCB0b0FkZCkKQEAgLTQ0Miw2ICs0NjQsOCBAQCBpbnQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpsYXlvdXRSb3dzKGludCB0CiAgICAgaW50IHZzcGFjaW5nID0gdGFibGUoKS0+dkJv
cmRlclNwYWNpbmcoKTsKICAgICBpbnQgbkVmZkNvbHMgPSB0YWJsZSgpLT5udW1FZmZDb2xzKCk7
CiAKKyAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7
CisKICAgICBmb3IgKGludCByID0gMDsgciA8IHRvdGFsUm93czsgcisrKSB7CiAgICAgICAgIC8v
IFNldCB0aGUgcm93J3MgeC95IHBvc2l0aW9uIGFuZCB3aWR0aC9oZWlnaHQuCiAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJvd1JlbmRlcmVyID0gbV9ncmlkW3JdLnJvd1JlbmRlcmVyKSB7CkBA
IC01NTEsNiArNTc1LDggQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQg
dAogICAgICAgICB9CiAgICAgfQogCisgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOworCiAg
ICAgbV9oZWlnaHQgPSBtX3Jvd1Bvc1t0b3RhbFJvd3NdOwogICAgIG1fb3ZlcmZsb3dIZWlnaHQg
PSBtYXgobV9vdmVyZmxvd0hlaWdodCwgbV9oZWlnaHQpOwogICAgIHJldHVybiBtX2hlaWdodDsK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiAyMTE2NykKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4
IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoTm9kZSogbm9kZSwgRnJhbWUKICAgICAsIG1fc2Vs
ZWN0aW9uRW5kUG9zKC0xKQogICAgICwgbV9wcmludEltYWdlcyh0cnVlKQogICAgICwgbV9tYXhp
bWFsT3V0bGluZVNpemUoMCkKKyAgICAsIG1fbGF5b3V0U3RhdGUoMCkKKyAgICAsIG1fbGF5b3V0
U3RhdGVEaXNhYmxlQ291bnQoMCkKIHsKICAgICAvLyBDbGVhciBvdXIgYW5vbnltb3VzIGJpdCwg
c2V0IGJlY2F1c2UgUmVuZGVyT2JqZWN0IGFzc3VtZXMKICAgICAvLyBhbnkgcmVuZGVyZXIgd2l0
aCBkb2N1bWVudCBhcyB0aGUgbm9kZSBpcyBhbm9ueW1vdXMuCkBAIC05OSw2ICsxMDEsMTIgQEAg
dm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIGlmIChyZWxheW91dENoaWxkcmVuKQogICAg
ICAgICBzZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKICAgICAKKyAgICBBU1NFUlQo
IW1fbGF5b3V0U3RhdGUpOworICAgIExheW91dFN0YXRlIHN0YXRlOworICAgIC8vIEZJWE1FOiBN
YXkgYmUgYmV0dGVyIHRvIHB1c2ggYSBjbGlwIGFuZCBhdm9pZCBpc3N1aW5nIG9mZnNjcmVlbiBy
ZXBhaW50cy4KKyAgICBzdGF0ZS5tX2NsaXBwZWQgPSBmYWxzZTsKKyAgICBtX2xheW91dFN0YXRl
ID0gJnN0YXRlOworCiAgICAgaWYgKG5lZWRzTGF5b3V0KCkpCiAgICAgICAgIFJlbmRlckJsb2Nr
OjpsYXlvdXQoKTsKIApAQCAtMTA5LDYgKzExNyw5IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0
KCkKICAgICBzZXRPdmVyZmxvd1dpZHRoKGRvY1dpZHRoKCkpOwogICAgIHNldE92ZXJmbG93SGVp
Z2h0KGRvY0hlaWdodCgpKTsKIAorICAgIEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50
ID09IDApOworICAgIEFTU0VSVChtX2xheW91dFN0YXRlID09ICZzdGF0ZSk7CisgICAgbV9sYXlv
dXRTdGF0ZSA9IDA7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkBAIC0xMzksNyAr
MTUwLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgZW5jbG9zZWQgYnkgYSB0cmFuc3BhcmVudCBsYXll
ci4gIElmIHNvLCB3ZSBjYW5ub3QgYmxpdAogICAgIC8vIHdoZW4gc2Nyb2xsaW5nLCBhbmQgd2Ug
bmVlZCB0byB1c2Ugc2xvdyByZXBhaW50cy4KLSAgICBFbGVtZW50KiBlbHQgPSBlbGVtZW50KCkt
PmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpOworICAgIEVsZW1lbnQqIGVsdCA9IGRvY3VtZW50
KCktPm93bmVyRWxlbWVudCgpOwogICAgIGlmICh2aWV3KCkgJiYgZWx0ICYmIGVsdC0+cmVuZGVy
ZXIoKSkgewogICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBlbHQtPnJlbmRlcmVyKCktPmVu
Y2xvc2luZ0xheWVyKCk7CiAgICAgICAgIGlmIChsYXllci0+aXNUcmFuc3BhcmVudCgpIHx8IGxh
eWVyLT50cmFuc3BhcmVudEFuY2VzdG9yKCkpCkBAIC0xNzYsNyArMTg3LDcgQEAgdm9pZCBSZW5k
ZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjbwogCiAgICAgLy8gV2UgYWx3YXlzIGp1c3Qg
aW52YWxpZGF0ZSB0aGUgcm9vdCB2aWV3LCBzaW5jZSB3ZSBjb3VsZCBiZSBhbiBpZnJhbWUgdGhh
dCBpcyBjbGlwcGVkIG91dAogICAgIC8vIG9yIGV2ZW4gaW52aXNpYmxlLgotICAgIEVsZW1lbnQq
IGVsdCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCk7CisgICAgRWxlbWVu
dCogZWx0ID0gZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCk7CiAgICAgaWYgKCFlbHQpCiAgICAg
ICAgIG1fZnJhbWVWaWV3LT5yZXBhaW50UmVjdGFuZ2xlKHVyLCBpbW1lZGlhdGUpOwogICAgIGVs
c2UgaWYgKFJlbmRlck9iamVjdCogb2JqID0gZWx0LT5yZW5kZXJlcigpKSB7CkBAIC01MjQsNCAr
NTM1LDEzIEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0QmVzdFRydW5jYXRlZEF0KGludCAKICAgICB9
CiB9CiAKK3ZvaWQgUmVuZGVyVmlldzo6cHVzaExheW91dFN0YXRlKFJlbmRlck9iamVjdCogcm9v
dCkKK3sKKyAgICBBU1NFUlQoIW1fZnJhbWVWaWV3LT5uZWVkc0Z1bGxSZXBhaW50KCkpOworICAg
IEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50ID09IDApOworICAgIEFTU0VSVChtX2xh
eW91dFN0YXRlID09IDApOworCisgICAgbV9sYXlvdXRTdGF0ZSA9IG5ldyAocmVuZGVyQXJlbmEo
KSkgTGF5b3V0U3RhdGUocm9vdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDIxMTY3KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsMTIgQEAKICNpZm5k
ZWYgUmVuZGVyVmlld19oCiAjZGVmaW5lIFJlbmRlclZpZXdfaAogCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lVmlldzsKLQogY2xhc3MgUmVu
ZGVyVmlldyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyVmlldyhO
b2RlKiwgRnJhbWVWaWV3Kik7CkBAIC05Myw2ICs5MywzMCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
SW50U2l6ZSYgbGF5b3V0RGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERlbHRhOyB9CiAg
ICAgdm9pZCBhZGRMYXlvdXREZWx0YShjb25zdCBJbnRTaXplJiBkZWx0YSkgeyBtX2xheW91dERl
bHRhICs9IGRlbHRhOyB9CiAKKyAgICB2b2lkIHB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gqIHJl
bmRlcmVyLCBjb25zdCBJbnRTaXplJiBvZmZzZXQpIHsKKyAgICAgICAgaWYgKG1fbGF5b3V0U3Rh
dGVEaXNhYmxlQ291bnQgfHwgbV9mcmFtZVZpZXctPm5lZWRzRnVsbFJlcGFpbnQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9sYXlvdXRTdGF0ZSA9IG5ldyAocmVuZGVyQXJlbmEo
KSkgTGF5b3V0U3RhdGUobV9sYXlvdXRTdGF0ZSwgcmVuZGVyZXIsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBwdXNoTGF5b3V0U3RhdGUoUmVuZGVyT2JqZWN0Kik7CisKKyAgICB2b2lkIHBv
cExheW91dFN0YXRlKCkgeworICAgICAgICBpZiAobV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCB8
fCBtX2ZyYW1lVmlldy0+bmVlZHNGdWxsUmVwYWludCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBMYXlvdXRTdGF0ZSogc3RhdGUgPSBtX2xheW91dFN0YXRlOworICAgICAgICBtX2xh
eW91dFN0YXRlID0gc3RhdGUtPm1fbmV4dDsKKyAgICAgICAgc3RhdGUtPmRlc3Ryb3kocmVuZGVy
QXJlbmEoKSk7CisgICAgfQorCisgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCA/IDAgOiBtX2xheW91dFN0YXRlOyB9
CisKKyAgICAvLyBTdXNwZW5kcyB0aGUgTGF5b3V0U3RhdGUgb3B0aW1pemF0aW9uLiBVc2VkIHVu
ZGVyIHRyYW5zZm9ybXMgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkKKyAgICAvLyBMYXlv
dXRTdGF0ZSAoY29tbW9uIGluIFNWRykgYW5kIHdoZW4gbWFuaXB1bGF0aW5nIHRoZSByZW5kZXIg
dHJlZSBkdXJpbmcgbGF5b3V0IGluIHdheXMKKyAgICAvLyB0aGF0IGNhbiB0cmlnZ2VyIHJlcGFp
bnQgb2YgYSBub24tY2hpbGQgKGUuZy4gd2hlbiBhIGxpc3QgaXRlbSBtb3ZlcyBpdHMgbGlzdCBt
YXJrZXIgYXJvdW5kKS4KKyAgICB2b2lkIGRpc2FibGVMYXlvdXRTdGF0ZSgpIHsgbV9sYXlvdXRT
dGF0ZURpc2FibGVDb3VudCsrOyB9CisgICAgdm9pZCBlbmFibGVMYXlvdXRTdGF0ZSgpIHsgQVNT
RVJUKG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQgPiAwKTsgbV9sYXlvdXRTdGF0ZURpc2FibGVD
b3VudC0tOyB9CisKIHByb3RlY3RlZDoKICAgICBGcmFtZVZpZXcqIG1fZnJhbWVWaWV3OwogCkBA
IC0xMTcsNiArMTQxLDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV90cnVuY2F0b3JXaWR0aDsKICAg
ICBib29sIG1fZm9yY2VkUGFnZUJyZWFrOwogICAgIEludFNpemUgbV9sYXlvdXREZWx0YTsKKyAg
ICBMYXlvdXRTdGF0ZSogbV9sYXlvdXRTdGF0ZTsKKyAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRl
RGlzYWJsZUNvdW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9yZXBhaW50L2J1Z3ppbGxhLTM1MDktZXhwZWN0ZWQucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF5
QUFBQUpZQ0FZQUFBQ2Fkb0p3QUFBZ0FFbEVRVlI0bk95OS9WZFRWOXI0L2NrNVNVZ0kKRUY0a3ZJ
a0lVcFNYMGxKdkxlT29WVWVuOWJHcjg2MnJzL3J2ZlArZHJyblhkRTJmOXVsMDdPMTBySFdvSFVx
bDhpSWlFREFCQW9TRQpFQktTbkpQbmh4TWdoQ1FFQk5UZTEyY3RsK1NjZmZhKzlyV3Z2YysrOXRz
eGZmcnBwMGtFUVJBRVFSQUVRUkNPQU9WbEN5QUlnaUFJCmdpQUl3djhleEFFUkJFRVFCRUVRQk9I
SUVBZEVFQVJCRUFSQkVJUWpReHdRUVJBRVFSQUVRUkNPREhGQUJFRVFCRUVRQkVFNE1zUUIKRVFS
QkVBUkJFQVRoeUJBSFJCQUVRUkFFUVJDRUkwTWNFRUVRQkVFUUJFRVFqZ3h4UUFSQkVBUkJFQVJC
T0RKZUxRZEUxNGhHSTBTaQpVZUxhMXVWNCtnOEJMYWF6R2s3L2dIMlM4SXBPVE0vMWV5K1I2NFFq
eWQzREhTaEpvaEdkU0xTd2RHTmhuV2k2U2VoSm9sR2RXQ3pYCjgwbGlzV1NlKzBlSHJzV0l4V0xF
NDNHMFZQbm84VGhIWStFNnNXaUVhRFNHYmlSTVRNczBra0xDNUVhTFI0bEVJa1Npc1VQSmt4YmIK
Uzd3NnNXaVVhQ3hlVU9oWWVIVzdYZTNDL3RxbDdETEZZeWw5dnlKb3NUQ3I0ZGpMRm9QSWloOS9Z
SVZJN0hWNEIyaEV3dEdES1VjdApTamlTejI0MXdpc3IrMnJqWDVXeVBVaU9OazhIV000dm5mM2Iw
YXZJNjlWZTdNNXZzYTZtWTg1L080NzdwLytoYnlLWTVaNkxwclphCm10ODRSVTJKMVFqYjkxZjYz
TnRET1ZzdWNPTmNJNnk0K2Urdit6YXZuMzMvTnEzbGx0U3ZHTE5qUTl3YkdETmlkam54K1lLNDJy
cHAKdEM0eVF3ZFhPNnNLazgxNW1yZWNUM2cwblQxSFRXMDluSHJqSk5VbDF2eFozMFlTejFDYys0
K3ozSEpCOTBtVjVpWVYyNUc0YzBtbQpmMHp3MEF2WGIxdElqTWY1YnRDNGMvMjJoY1NUOU45V3Fn
cVZTZGNaZVpoZzBBM09icFVQMnRWRGtUNlRXQ0RCRDkvbytEWXUxSnU0CmRjRkNTVnJ5L3JFWWR3
YTJQL2YrSjFac2dMYWE0TjVYT2o0WDRBTlh1OExGYmpPYmxwV0tmNzBKY0VPd1NlR2o4MmJzbVhy
Unc0ejgKOEQyRDNwMjI3bXBxNDJUekd6VFhsR3lHSFh2NFBRUHViUFZpSXg5bnVYMnBkVk1PWWdI
R2gzNmxmOHk3UFZoYkM5NnhWYTdmdmtxVgplbmd5Nk5FbEhuMzNMV09id1YyNDhGRjc0emJ0bFlZ
eThvZEo0aGw2d1AzSGFmSzd1cmg1dVpNeUZiVHdBcU0vMytXeEYzQTZJUmdFCm5IUmRPTStaeGty
VUxESzNYN3hGZDBQSlpuU3JuaUcrU3F0azNaYy9wTDNPc2ZsN1pXYVFyeDlvM1BwekR5VUs2UEV3
bnZGZmVUQjMKak50WDAzUU5SUDF1ZnJyVHg0YTB6cVllTHAxcnc3SE5ydnE0TTVEZVlOWHovaWVY
c09YVzZDYVIrU0crK001bmxGdGF3dnVUU2NmLwo5QWUrQzUzazQ5NW1zcmRNR3A3QmU5d2Y4ZTI0
VTkvU1Jlc2JwNmdyTDBUeVFvZ3ovZU9YUFBRNnVYNzdnMjM1TzByODQzM2NHWS9qCkNucnhBUmMv
L0lRR3g5RzBTM3REWjM2c24rOEdKc0RadzhjZnRPVW93MEtpQ2pQeThDR0RiaC9PN3V0ODBKNzUz
dE9ZSC9tSjd3YmQKUUtwODl2VGVlVFhLOW1BNXFqd2RZRG0vZEY3VWpsNDlYcC8yb2xCK2kzVjFP
MnBYVjlmL3pYT2I4b1pXNnRSbEp1WkRBSFJkK3hOWAp6NS9CdHZvekl4UHpURDBkcGZSa08rVldN
K1hITzZnMkxUTGxDd1BRZmUwamZ2ZEdGUXFnRkpYVDBWcU41OGtVUFRkdjArSk1hVE1lCllQRE9s
L1JQTFVIVFdUNzY0REp2TkxmU2Rmb2s4WW43L1B3c2hMUGhGRTFWOXF5eTFkdFdtWmcxT2pTdXJt
dDhlT0VVeHhyYnFkQTkKVEMrdUd6SmYrWWlyNzNaejNKbWsvNWRmbVh3NnlxcTFtcnFxa2dLbmdF
eVV1VlJhYTNTZVRJS3JXK1gvdVdMbWRLdENaVXpuUHdOSgpuZ1NTdERVcEhJVzU2M3FTcUVPaHFV
NmwzS1ZRcmVwTXpjT3BkalBWTmVtL1ZleUZDbVF5VVZtZVpQaHBrcXA2aGFhamFJM2lHdmUrCjFH
bTRZdWJkYmdWblVzY3pCV2FYaVpvUzAyYVkvL3d6U1hXN2lkcHFFNVdWSmhwT20ya3NOMEZjNCtF
WE91RXVsZjl6M2tKWEd6ei8KWHVlNUZVUCtxTWFkcjNSS3o1dTU4cWFaMWphSTlPbjBoWk8wSDFl
Mmw3M0pTblZUS3pXbUJTWjlZYnF2ZmNUbC8rcWt0Ykdhd1BqUApQSDd5bEVqcENScktpOEJrcGVw
NEt6WHFBcFB6WWJxdmZNU1ZjMi9TM3RGQlI4Y1ptbzZwakQ5T2NxYXJHaFdJcjh4dzUvLzlqc2ts
CmhiTlhydkg3ZDgveVpsY1hiYzAxTFAzN1o1WnhjcXE5Q2J2NXNHU0k4ZXo3LzQvSC9qWnUzcjdP
MmU0T21tdE1URXg2TUx0T0d2SHQKR3NaT21hdUoxbXFWSjFQenVMcXU4T0g1Wm9vVWlDMk44OWUv
UDhBWGF1UEduNjV5N2t3YlhWM3QxRG1DOVBYMU14d3BwYTJoSERVbApjNzBqd29Sbm1jWHBwemlP
bjZiQ1poaXB0Y3hGKzhsU2hwK0d1UEtuLzhQSmlxM1grNHI3Sjc3K3QyblQrZEJXWjNqd3IxOFpu
dmFDCm81NzI1c3F0dWhkYjROdXZ2c2ZSM1V2UDZlTW9nZWZNemM4eGxxeWlvNllVRTBCOGlmLzhj
NERxOW5acXE2dXByQ3lqNFhRbmplVkYKdTl0dGRKNi9mdk1RT01hcDl1T2JkV3ovTXBWUjZtcW1K
dlFqWDQ5YU9OMVVucVVkVVNpcmFhYmV1c3pFWElqdWF4OXg1Yjg2T1ZudgpaSzcvWng0L2U0SmFm
WXJxa24yK3BmUXdzNzRZcFNWV3dJU3VKNGc2anROVVY0SEZ0TDhvWHdSdDFjMlgvM3JPdFZ0L29Q
T05LbFpECnhkU2VxQ3U4UGRzdjIvUlFLQ1pLS2lxeExqNWh6dHhBUjNxNTd6VnVrNVhLY2l2RFQ2
ZXBxcy8yM2xNb3FhNmpXbDFrYXQ1bXRCdDcKMHNsTExOdDk2YllROXBHbnd5em5WNW5OZk50ZTBJ
NWVMVjVhZTNHb1pMSHJRNnRETDRlQ2VwbXFaZXVsWmxGVndJYXJwbW56MnV4QwphRE82b3FLdEJs
TlZ0MCt3S0xaS1dsejFsTmczNG9zejJmY05JMEdBZXE2ZmJXWHphVXNKYlpjK290c0o0VHl5bFI0
N3R2bTMyYkpoCmJTcU80dkl0bVMxbVFLRzhzWnZyUFliYzdvSHYrSGxtZFplY2IwZE50V3htRlJS
TVdHMEtqWjFtdWwyQVZ5ZFUyRXFQRjhSRVZiT0YKU3owYm8vZ21paXpiN3hmdHN3K2kyazNVQXlo
SDgxYUtoNU9jdkdhbXJVYkJabGRvN2xaeEFXdlJyVEQrU1EydjAwVDdHVFBkM1JaNgplaXkwTnlx
Yjk5ekFXeTJwY3JlcWRIU0RkMEJqSVFhQjV4cEJvS25XdEhuL2piT0FXK2Y1YXZibFdKYVUvYXFx
R1VXeFlDK3Y0NTNlCnN3Qk1UQytSWHNRYmxVZTFtRUZSVVZVVlZiVlFWdGZHNWZQbFJrZFhDOUQv
OVFPQ09MbHc2d2F0TldXYkx5MnJvNXB6dDYvaklyeHQKV2RIQnk3REtvZy9BaXMxaVBPV29idWE5
aXkxTUJBMG52YUF3Z0pveUx2T0drV2wrZnY2Mkg2am4rc2M5Vk5xMjZtQlY4em11ZGJsZwpvbzlI
N3BYTk9KeFZGWnQvUC95bWo2VzBHV2JWWGtvOVZUalMydGQ0WUp5dit5YTQvTkZibEtReXJKWTBj
dW1EeTV5dlp3ZUJxY2VVCjk5Nmt0NzJKbXJvbXp0MTRueGFBcFJDSlZCai81Q0JlWnpmdFp6cnA3
dTZtcCtjYzdZMWxPeVBiUVpTeGYzK1g5YzZMeWxUZC9oN3QKM2o3dWovdHpwcTRvaHQ1VjFReUto
WktxSm5wdkdMWXhPRGJIL3BxZ09EUDlYL0xJdjFFUUNsWE5QVnpxYWQ0NVUzaEU2TEYxd0lGRgpB
ZXgxOUY3cXB2TFEzN21aZXRnRGlwV2lURjlobjNHcmRudXFIYzZsZkpVaXl5NkxGM0x5c3NyMkJY
UzdLM3ZOMDJHVzg2dE1acjVmCnhJNWVMVjVPZTNIWVpOcjFZZGFobDhPZXJVOUpOWXE2dHZXcWM1
WVY1d2lkMmNremZtOHNOOVJXbnZOd1l6MUNTd3NWT3pyT2RrNWYKdW96dWU5R1dja3VPcWxOdDFB
KzQ4UUlURDBaNDQ1TnpsS3NRbUJtaTc4RmpITzBYZUxlN01mL1Vhbm9IWFlOb2FsV0VDVURYR2V0
UAo0Rm1GOGhZelBVMHcxcGZBRXdGenVVSnZUMnA1VUZ4bjdKY0VBMHRBRU5xNkZGemxvTmdWWEdh
ZEJ3OTBFZzZqZ01KaEtIZEEwUWt6Cm5TNVk4bW1NajBEbkh5eFU3dXBzSkFsNEVnemNUMkt1QjY4
WGVtK1lhYXJNcmRQRW1zNzRZSUwrRVhDNm9MUEhRbU5aOG9YelZaZVIKcHFYY1RIUGE3OVU1SFI4
bWJoNVBoZE4waGdhTVBIejF1V0Z2WFJkVU9odFZJSWwvSG5DYUtFOTdJWlRWS0lET1lsQ25MblhO
ckc2VgpWM0dsY2QrM2xLU3BwREJIUzl1MDllM3JTbFdMa2JDeXJhTVFaK3lmditCNjd4d1dZR1Y2
RkRmZ2JIK0x4cElzd3pHV0tuNy80VVhZCnBSeGZSQVpVTzZVQVBPYno3K0hHdVROVTJsVHNkVzl5
MDdrUlVRRmgwa2xWNHBYbnozQURycTQycXJKVW11cFRIYmdlKzVqb202R3IKcVJNN29DZDA2cnQ2
cVZ2cm8zL0N5N2QzUi9qb2czWmo4RUZQZ3N0SjBXWjJZa3dPOUVQYlJlcDJycHZMdWgvRWNhS1hj
N1kwbzFCTApjZFhEUkdMRHJnSU1EZmdBSDE5OWJxeFg3THB3Zzg3R3lpeXhiV2RwNURzR3FpNXpv
K1U1ZC9xaVdVTHNVeVlBN0xSZDZlSnYzejFpCjZjVFZyUHJjWXF0TlU4MFpkaFZmWWV5WGZpWldB
WitQOHZiemRMVTNVMkxSQ1FlV21KMStScWk0Q1pmdTV2NkFteE8xTUQwSDhKQy8KRHpwby8wTW4x
dkE4NHlPcmRQN2huTkhHNUlsemRXbVdtZWtaM0t1bGRKNkFCMzJQZ1hwNmI3eExVNjVlUU03NE5H
WUc3L0VndGRTcwo3OTQvWWIyYzNoczlsRzltczdBMDljZ0NqL3Z1TXVJRFhFMzBkcitWbWxIUVdC
Z2ZwSDk4RlVkUmdqQlY5RjdzSnZ6TFgza3dzYVdICk4yOWRvRTcxNTRqRHlNTkkvd01HQTBXNDhP
RUxBbG1jVHdEUFQ1bHg5K0lJampOdzM1MXFsNHZvdmZFN21pcTNsdEVsMWhZWkgveVYKL2hFdlRs
Y1RuVDN2MEZpZVhaKzU4N3FkV0NUQWttODJyV3l6NjZKOFczdFVZQm5uTE5OcytiOUF3Mlo3R0dk
bHdZZm4rUVJCNnducQpsRm42QnQyQWk1N0w1MmlyS3dGMEFwNG5XZlcxUFU5bnNhN2tseldiTEFk
Vnp1bDZHSmp3QVU2YXV0cDVxNzNKNkVUdXNXNjJuYjFBCjZacG4yN1d1eXgvU1hyNldWOTVzNmZ2
N2QrWjdhNEdyaG1md0FSTnJGaXp4T0tVdFBYUTJsTEF3TnNEb2ZBQkw1Um5PZGRidG5QRTUKcEha
aHArNXlsYjhsWjN0UkZzdFdKOHk3MkZweDFuTElyL05jZGFpUXVrWE81NHNUMit0cVpLL3QwMnZB
bm52Mml6NHZudkZCK3ZvTgp6Nkh0L0hYYThyOHBjeEplWHR6OHU3N0NrVlVZeFZGSFozTjVsanY3
UlVucjYwVlRHNEhqTEU4OUpnaDRSOFlKN3VKZ2VtYzFadWMxClBPNEVmWGNTakFGZEY4M0dpMXBS
YUh0YnhlZUQxZlVrb05EV2E2WUI4QVkydWcxSjNIMEpCbFlWUHY3QXlxMExKc1llNjl5L3J4T08K
Z3g1UEVxNVMrRjJ2aFF2blZJcUM0UGJDc1NvVGEzNGQ5MGdTYjdEQURkVVJuVy91SjZtNll1YlNK
U3ZYdXFEdmprWWtSM0FMNEJ2UgptVlVWZW50TUJIM3c0SnM0ODdFWHoxY3U0bUdOc1o5aWZIVS9D
ZW1kWGRYRU83Zk1YTCtzMEo2YWNIdjhRR053VmdjdHliSVhjSmkyCmU5RXBJMXBjVHFLbk9zbUxv
UzFkbVZPQmpUemtrU2tlUTR0RldKb2Q1NGR2alU1cTk1bUdySDdDNHV4elpqMGVQQjRQa3lPL01P
Q0wKb21rQU9wR1FvV21ITFhOcGowNWtkWVhWMVZYaXFNUlhWNGpFdCs4RVBCZ1pBT3ljdk5KdC9P
bDl6SjIvL1RlRGt3dG9pbzJ5RXRzZQp3dXhFVDIzRU51ZWFkck1VcFdZMS9heHQyb0JHUW5IU2V2
YW1NUXNRSE9SZkE1NnRqdnU2dHRtOTFsZm5HZkJCOS9ITXRmQUcyV2JZCkxUYjc5dXQ2Qkw4WFhB
MlZ4c0NDV3NvN3QyNXkvWEl2N1UyR3dUMStjSWZCMlh4enJSRDNqL0h0WUJVZmR0ZGhqbWR6UGw1
QXBoUzIKeWxwYytIanFXU0VmaXBLS0xiN0srS09IQURTZHFNS2lCZmpwcjE4elFDdC91SHFWUDl5
OFFHRGtJVi85ZFlDVmVBeS9aNVQrRVRkagovZmNZQzZvNGdhU3JCeWZnNm5xTEt4K2ZvM1RkajN0
a0VHOHdsY2Q4Y1dxZ3g4SzR4OXdFdlk5NTRDdmkydVd6dVBEUzkyZzYrNHhNCjN2aFVHcm91Y3FY
TEJkVFRjLzczL09GYUYyVVpTdDAxemRnQy8vcmlMcmJ1ai9qMHp4L1NZM2JUOSswWHVGYzE5TENY
dS8xanZIbmwKRXBldW5xZmVGeVFPdU5vdnB1bmhYV3F0L3B4eG9LOHk4TmV2R1N6cTVQWUhWM252
dlN0R256UkJWbmJFclM3eXpmMUJxcTVjNGRLbApEN2pXdFU3Zm5XZWI3YkxSRHZjenF4Nm50NmVO
b00vTmcyOStZRDZiMmVYSmE0YldXUE12Yml2YlhMcklaRmQ5NzJJak8vSy9iVEFtClNTVG9ZM0RN
aS90eEg3TTBjUGxDTjA1OEROejdDdmVLQnBINUhQcktrcWRkWkQzTWNrWmZZZUN2WHpQdjdPTFBu
MzdLclFzMXVCLzMKOFdobUpiK09jdFRONWJueEhkZENxNzQ4OHVaT1AzOFpxRFNjNlFDM0c3ZTNr
cGJVM3J6cWs4Y0plK0dOTjdJNEh3ZmRMdVRUWGM3eQp6OUZlYUxucVJDSy9yUVdpV2NzaG44NXox
YUdDNjFiV2NEdnRlazkyKzVxdzk2bUY2Q29yb1RVMjlxbXVCcGJKZTFoSHdXenZmT202CnZ1UGZn
YUNXVXBNMmVtR01nYXNVVjdxTUMwNFh4YnZOQzNtVExNenJURXpvYk93Qnpwd3QzejVBWW1KanB0
TllFcE5rMWd2T1doTlcKb0tSZXBSNm9QMnVtdFVaQmRhaWM3MUN4V1V6NEp6VjhRTk41TTQwbEpz
b2J6SFNjM2tOK1RlQUNuQTRUa0V5VmVES3RNN2lkT01ZZQpsMHVkWnByYUxMeC8zdERRMkhQOWhm
T1ZuU1FyL2lTV1k2bmxYOEVrWHo5SXBDcXFDVWVKUWxXZG1lNWVLN2N1R3JLTWpPcHMrb2c1Clhn
UUpvTlJscERuNFU0SkFMSWtXMDVrWU52SlJXNVYvOXVQeGQxL3kzNTkvd2JmMyt2SFZkM1Bqdzl1
MFYyY2ZXWWdFL2ZnREFRS0IKQUl1TFMxdjZJRUZ3eVJpWmNaWm1PQ0Q2T243dkZQZS8rb292di95
Q0wrOC9ZVFd4M1NrNkdCa01IRFh0M0w1MWhaYVVnemZ5OEM3LwovZjBZWVgxdllYSmhVWE9VcnhZ
bmtQcHptOFoxRFpReTNybDFBWURnMkgxK2RxK1F1WUJiaTYybjR0Ly9ZdDRWOTJQR2FLR25lV09H
ClE4VlJVa1pWWFJQZHZSOXc2MklYQUNPanMrUWNlOUFDOU4wWm9QZldXUnlBdnVFRzduTnlkcWRN
S1JURG9ZN0VjL1Z3RFBxL3VjUGYKLy80Wm4vMzFLd2E4MEhiMkNtZWJ5bGg1UHNvRVRxNjgyWWdG
c0pRMWN2RkNHekRHOFBNWWpaMjluSFVCcmg0dW5qdkhCNTk4UW0rYgpDd2RnTGlyQ1pyVlIyZEJL
eCttdEpiWjU0NXhlcGF5dTJiQVpWdzhmbjJ1bHVxNkZscVpzVWhjUzN3cUtZcUdveUdoWUxGWXJG
cXNsClE4M0tybWt1UFh1TUR4ZVdhQURQL0FvYkp3dU16QVRRNG9aTitlYjlnSU16MTAraUpzRmlk
NlRwd1VvZ1R4emgyYWVNNGVKNmw1RUgKeFg2TTQzbEd4VFBqVmszbVZMdHNCWFJRSElCdnMxMDIy
dUZyWE9wc3BxbXRoL2ZQdHdBK3hwNEhkc1NkTDYvYlVTalBLTnRjdXNoOApiamQ5NzFhbU8vSy9M
WDRyTmEyZGREdUJ0c3YwdGpkUzE5ak9sZFNBeVBSY0VITHFLek5QdTh0Nm1PVzg2aGxtakRiZWFh
dEdBVXBxCm0ybDN1VGhXWXQxWDNieHk4ZUtPYTZjU1V6bmx6WmQrL2pJQXJGVjA5dFFEajVsS3JZ
c05MMHdSYkR1VGRUYjJvTnVGZkxMbkxuK3kKdGhmTE9jdDBMYit0K2FKWnl5R2Z6blBWb2NMcVZx
NXdPK3ZxWHV6MmRXSFBTN0NPbldpanRWeWwrWGdsZjdzN2dIZXNIKytxeXUxTAp6YnV0SWlHakMy
SjBRbElrMXJkNnhLc3pnM3oxWUNUaldSY1hibDNPdm94bEwrZ1JRbWtIK1JqMm9GRFRlWlhiYjhS
UXNsWE1ET3JQCm11bHVOVjZKV2tSajhGOGFnL2NTeEMrYjZhNVROanNsK2JzUUVGeE1FZ2NzcWpI
d3Y2U25wTEVwVkFMYVNvSzdnNERUeEZ2Tlc2OWcKZlM4T3JrM2w2cWNLQVkvR1A3L2FPbTBxWC9m
Ym5GYVE1WFVLVGpSamFjd0w1aXM3SnFvYXpWUUJ6U2QwaHU0bGVPelZXWW16NDlTSAprZ1lMMTdw
ajNCM1VDZWtLUmJERGdqZTBWRlZxd2xLdWNxTTN6cDIrSk45OHZ0M2pzcW41SFpDejczK0VjN2FQ
dTRNK3NOZ29jZVMyCjdzWXozYlJ1cmc5cHdmelp2MUtqK1ZZcVhDN3crUWlHMWlIdFJDY1VPdzF0
M1pSYTF2ajZvWnV6dmU5UW5iRmo3bUJrMk1KU1VzTzUKRDI1emN2SXhkeCtPZ1hlQUwvdnQvUGxj
NDZiZUNnbVRqcDV5RmVPNWp1cFZMWlFEUVhZdXlBUmozOFJIVjdyNDRydkhUUFI5VFlYMQpBcGEw
azB1VTFQSWlQZXZUdTZPdHVQbjZvWnZMSC8wNXk5UzNRVWxESjllNmZkd2RuQ1VVYjZVNDRPYnA3
Q3FHejZOUlZIa0N5K2czCmVGc3VjTTRhSXhKTkVsNExBRVdFUTJHS2kyM1lySVczUzRYSXRCdGRG
ODl6c3R4S0VwVWl1OTFZKzR6T1lqQUFPTENraVdOM0dqUEkKOFpSVG81cUJqYVZmcW9xU0tydEVX
aEZ1TGJIVkNSY1FwOFZoeEduVUtnWG5zWG9ZenlaNVlmRVZRdTQwNDZ3cytxQytIVVdQa1VoQQpV
ZTBGTHRhQzRuQmdjWmhvQXNiNjdqQTIwc1RGM25kb3NBTGI5SkF2am1KVzNHTkFTMHJ2UnI3eWs2
RmpXelZYUC8yRWdHZWNmMzQxCmtHcVhtN2ExeStZMEJaWFhIY2ZKQk93WWlNdWYxNnlTcEMyZnRq
Z3FzK3NpQzduMVhYaVpKbktxeVlTbENGeU9yWUVhMjdFNjZoazAKM2plNzZDczlUL2xsTmVUZGt1
VWd5MWxqZWM0TnpwNnRXVTFMT2QxWHJ3STZzNTU5MUUzMGpHczZxem5sdGJQOExGZjZnTGFXbHUv
cwpWSjVvd3pYZ1pYQjRsdE9YR3BuOWRZS2UzcmV6aER6b2RpR2Y3Z0JzdTlhWExYYXJFN3ZZR3Bu
bGtFL25lZG9UVTJGMUsxOGQzRzdYCmhkcHQ5bnIvS3JMbjhUczkxZnUxVmJyWTlNMjh6MW1KYjl4
UFYxaW13N0ZPMEpmWVROUlJWYk41eStjTGJVNVBsVFIyOCtrbk43YmkKcDUxYmY3NzY0czRIZ0xi
TzFzR2xsYWtOdHdhV0Fwd1B3T2lNcDFEdEtxZFNNeEpMb1FJN1NhckNHejJBVjZkL0xNSENqTVlJ
ME5hUQpYaHc2b3c4TWcrdTlhR2JmcS9wMG5hRy94L25tZnBLem4xaTVlWDczUjdZMVVCWVQ1ZXp1
ZEFBRjVpdi84NDBuZHdtaUFwaXdLQ1pLCjZ3RnZjdHVvZFN5MXRNcFdaTmhlWlpPRlA5KzI4UEhI
Rmo2OWJhWU53S1hRVUo3ZkFkRjFLOVh0dmNaSWlmc2hQd3pONXdtYjN0VzMKMC9tbmExUmJkR0l4
YlhORHVkY2Z5cm8zWU9OUlBZdFhlVkF5UkpmY3pBUTJhcGVGNnVZZS9uVGQyTGpNeENKck9nV0Z5
VWFSM1ppcQpENGNpV1YvTmVqU0VHOEJWUTJtT3pyYTlwcFByUGNhd1l2KzlCN2k5V3kxSE5yMFVU
SHlKZTEvMzBYUGo0eXo3UjdaajJKVU5pd0phCk5Jalg2OFBuOCtHYjhiSWNEaGhyYkNjZThMZlAv
OFlYZi91Qyt5TkJ3TWVEYjc3a2IwLzNNT0pVb0V5N2pRd1ZPVXB4T0Vvb2NkalQKT2tkSkVwclJ1
bWxwVFpIcXFLQ0pBdXZ3RHZZYlo2NDdoeUZqbGpRdEFLVTBOamJSMU5SRVUyTWpEWTJOMUZYYXdG
TEorVC9kb0tzZQpDTHE1LzgzbmpDeGtXZHVVTXc2VlVBQkEyLyszSVBSVmh2NyszM3h6UDhyWlR6
N2w1dmtteUZpZ3NiMGR0dWR1aC9QbGRUY0sxVVZXCk5xUTV2RExkYkRJSzBGZGhzdVpLNUNES1dU
ZmE4MkE4UzJvSHFLT2M4bHJ5cEY4Z3Rtck90RHZCTzRGbndjTk1zSjNHcktNa0I5MHUKNU5NZGV5
Ly9mZFNKdkdOQisybFBDbTVuOWxrSFg2VGV2eUxzMlFGUnRyb0dhY1Z2WTJNRmhyMTBheEcvcG1W
MHlCTmhKakJ2aGxYTAo2b3pPRllCdmNmc3BVcXB6YTZsVWZYSGFwdFQ5WkdDcnN4bjJUVytldzk5
MTdkVG1KcXdWenhCLy8rd3p2aC95N1Bra21VVG1BeHV0ClZaN1RwQ3JxRGNrckxiQ3FLM3g0MjBx
RFl5dDhZRExCNHlEVTk2aXB6ZEpKWmllMVBjdTJPcVB4T0FnWFA3SVk2NmczK25ONUZHZE8Kdnhk
TDRnYktIYVlEeWRldWFBQW1jZzMySnpXZzNvUkROVkZSQjVCa0pXMUR5M3JLQ2F4SzIyQ3VXRXhZ
clNabVI0ejlPajNkYWdIbgp0MnVBbmZZclYzQUJ2c2ZmTWVqSnZrZEF5ZENIMVdZbE92dUl6MGY5
bERlOVlTd3RjL2N4bWVYMENpV3Z4M3N3TWlpczhXRGcrVFlICnlGWnhMTFdjTGtFaVNVRmh0aWRv
L09lb08wVUxFQndiMjNhYTFRWUx6NHpocnJhMmhrMmRhL0g0RGh1cWFudVg4eHNqRHZYSzVueEgK
UVFkYlordXQ2MkdHL3VkYmFxLzlpYmJORFk5aHhrZXkxKytrdGc3MUxoeXFNUUR5d1FkWHVYcjFL
bGMvK0lCenJTZDQ3OVpOYnQ0MAovdDM2OEJhOWJVN0FTZS8xbTN4NEtzdnBXZnVXeWRpanRyOE9o
RXBwYVJQZ1pYbDFLMFk5R3NZTm1KWHRBeHlaUldyT2V1clNYdUpNCm4rWEs1VUx0TGI1QzJKbG02
b2h0NzBObVZ0SktPN2JBOS84Y1k4MC96bmk0bE01TG4zTHJzckgvWlhCcVlkUDJEUm55eFRHRm84
b0oKdUZrT1p6U282L203cWh2NVc1MFpTYlhMM2FsMk9iNHRHaU5zMm9PeFNLb2R6dHhMbGordnU1
MlhFOTlGRjluWXFlL0N5M1QzOGsyNwp2NWxuYTBINktreldMUTYrbkZWc3hVN2dNVlB6V3k4bFBl
emgrNzduT0Y2Z2JtNWR5eWZ2Qk9hYzZic3o3RHNYQ2pVdG5ZQ1BCM2NmCndQa1RPUVkvRDc1ZHlL
MDdOOEU5bFgraGRTSzdyVzFSaU01enR5ZnJCZGF0dmRiQjNlMTI5M3IvcWxCUWE2L0Z0eks0dGg0
RE5CWW0KeHpZNzhpMjliMnllVUZKVVhyMjVqM2p3N3M4c1JGTVZOUlpnOFBQdmNIWjNwSjFtWXVQ
MGU1Y3hkbCs0dWRNL3VhVTRQY1RpUmdMaAozQXN3Z290Ykc5a1RtN3R1ZFNKclcwWWNqU2NBallC
bmhDL3ZHeDg3Yk90OW44N3FEVTh4eHR5dnFVM29qOGNJNU9qbEorUEpWRHFnCmtVU0xKd25NSm5p
WStraGVTKzJHWjJYQ0J2ajZOZVpYZE9iSDRzWnBYK3RKL0t0SlFPZnhWenF1ZGdWbmlZbGlHNnl0
YUt5bXZnU3UKUnpUNkhnS1llS2ZOVUZaOFZlUGVrd3c5YkpTZW52dDNJalZiNC9Wb3JQZ1Q5UGNi
dC94ekdpdVpYeDdYalk2UE41Uk1SWkhFODFRRApUSnhwVUY0NFg1bG9xeG9EZlhFbUYzUjBRQXRy
UE9pSG5odG1iTUNLTzg1bm44V1lYRENraWZvVGZEc0lGM3BVVktEOGhMSEg1TkZFCnF0dzFuZEYr
NDBPSzI5ZXNKcGtkaVhGdkJOcDZ6YlRsMmY4UlQ5bTZ0ckdreUZiRDcxTHJRMGZ1Zjhsa1lLdHFi
OHoycllVamFMcUcKcG1uRVkxRUM4K044ZDIrTXJycFNzRlJ4TGpXVDBIL25jOFptVjdZYUZpMUtN
R0NNbnFjM05nY3RnMm9wQnQ5REhveHM3WEdJQnBhTgordHQybkRLVmdzTEFWbHVRV0U5SnJKVHgx
bzJ6Z0krN2R3ZnhiOVIzTkpZbUIvaHV4QWN0dlhRMmJFMExoeGE5K0JZelo0U3NOSisvCmFjeFFK
YmFHRE5TeUtsb0F6MktJbmFRTTNydWMwZUJHbWZ6aFN4NEhRVitlWm1ob2lLR2hJZnIrL2lYTEpV
NGk3Z0UrKyt4N0poZU0KWTdpai9rbStIUXh5b2VkNERuZEh3VjVTUmxtWjhhL0VVWUt6M0FFNEtD
MHZ3NUUramJwUG1UWmkwQ0pCM0VCRFZRbloyQ3J2N0srWQo4b1ltbk1EQW83SE40OHRYRjcyQWk0
NFQ1WUJHTkFINGRqWnkzc1ZGQWdFUFl6TnBHK0NWUXVJRUxlVXhHZnJUQ0M1NklSaGk2d0RuCnZj
Z0l4dkNlbDBpZU4ybnVORlhxM2pEcVM5L1gvOFBJekR3THM1UDg4L083T0R0T1lFRm5ZTkJORENp
cGE2WFZDUlRiTnN2ZTBNTWMKYTJXbmM4YmhPdDRLd01PdmYySitOVXAweGNlVUZ3ak84M3cra0hP
Z2FFUEh6eGFORVU2dlo1WVYvd3o5L1Y0Z2dYOXVucFdJbG1xSApOMllWNDNpZTNnTzZPTE5Sanpi
YitQeDV6WCthb3hGUlBsMFVwdTlDeXpTSGpXMWdCdC9FTk1ZZTJoanV4L2VBTnQ2b0t5R1JtZ25O
CnFxOW9tak93Y2RCZEFmWjQ4T1dzVUhuQ0NELzQzUmNNak0vZ2NZL3dseS92YzZMck9KWDdxcHVa
MS9LVmR4T3VQT2x2dCs5VUdXVDIKSFFDbHBEWTFHT1RrVEczdW84a1B0bDNJcjd2a3J1V2YzbDRV
VUNmeTJOcmVkSjY3UFZFS3Jsc0ZoRXNybjBMczluVTVnWGlYRHhIRwpjZjkwaDN1alc1MzhSZmNZ
UTBQRFRNNEdxVy9wb3VlL2VqbGRWN3A1MzJRcDVjUnhKeXZQWmdnUlpQTEpzUEd5SFgyRzBuV1I5
enBxCnRpbldaQ21sK2ZRSmJOb2FzeE9qakE0dG81dUNqSDNYeCtBeGx2MEFBQ0FBU1VSQlZEVGdk
RFhSMWRWTWRlWW0zZzNaaHJlV3BZVG4KSnhsYVNHSlovQmMvUHQwYUtWNmNlc0xRMEREUHB1ZHBh
dXZoM084dTBGS2R2azdPUkd6TmczdHhIVGhCUjFjTjFtMTkxQ1N6UTNHKworWEVqblNURFF6ckRJ
enJQM0VtcVdrejBuTGR3M0psNnlHU2kxS2t6UHBOa2FseG5yY3pFc1NXZzFrUkprWW5LTWhPaDV6
cmp6NU5NClRTYVpta295T1pIazZSTWR4d21GeU5NRVQ0MTl4QVFXTko0ODBmamwxeVQxSFNxT0pZ
My8vQXpyd05LaVRpS3M4MFBxeStmWmZoOXIKVkloUEpwbWVUVEsrQ205Mm1uanVnZGxwYU83SStG
Q2hhc0ttNnJpSGt3d1BhUXdONlV3N0ZHNytJZlZsOGhmTVYwWFI5bzUvTXFiegovVTlKUEpNNncw
TWFuZ0M4ZGRuQ3lkVHlxRVJZWjJ3YVBKTTZRME1hVDViZ3lnMEw5UnV6RzZyQzhaTXcvNE5HMzNP
TjV3TTZ5WGFGClMxMW16SUFlMVhuMkpNR2RmMnE0a3lZdVhqVFRWcHZENTliRGpQMTRsMytQR2JZ
K1AvbUVaVk1WeDEybFdFdXFxVkdYbVp3UDRYazIKU3J5c210RElmWDVJMVl2RjZYR0doNGNaSGg1
bVpQUUp6NlptV2FlZTdyZFBVYXlDdWJpUzlsUDFGTVZYR2ZqbEVjT3B6dWZROEJObQpFbFYwdlhX
TzF2b3kxRU9Td1ZHa3N6dzhBYXFibi9xR2VENDB4S01KRDY2MjgxeDlxNUVpRXlqbTNjSm9lSVor
NE02UHhveEcyRGZKCjBJS0pFeWRjRkRzcWFXK3VJYm4wRXovK1o1am5Dd3YwUC95SkNjOFNYYjNY
dWR4UlozU3dOL0wzTkFpaDV3eW5udCtjM1RRVlVkTmMKZ1djaVFuT3I4UkZIVEVVNGJNc00vaHpo
WkVmZFpyM1VJd3Y4MHZjVGc5NHdzRXhnT1k2dHlrV3BWU0V3K1IvdWpRWnhBak56YzhaUwpLcCtQ
NEhvVC8zV3VCVXRranJIcEtUeVRUeGthR3VMSmtvTXJOOTZqdnFUd0xYR3hGUi9qejAyY09yUDFJ
Y0lYa1drampzRFVBQk56Cnpady9WNWV4SkVERE0vZ0QzLzNxVFpYM0dNdDZCY2RyeXJhUEltMjB2
NFA5OUE4dEU0OU04T092TVM3ZXZFaU5MY0xJL1hzTXpxMEQKUHZ3Ukc3VjFsVmpVSW15bVJhYWVq
dlBzV1p3YVo0REhqMlpZSjhUU1lvVFMrbFk2bXN1engxa01zMFAvcG04eUJPRlpvdFlLbE9VSgpm
aGhaQXBZSTZoV2MySXVNeFRBLzlvai8vRHpCT2pBOXRvQzF5a1ZWYWZvclZkczF6ZWJtazlRN0Vr
eDR2TXpQVERIcDl0Qjg0WDNlCnJDOUJYMTltWkxDZjBZVUk4Zm5IUEk0MmNhM25KQTZyUFUwUENk
cDczNkhWcVdXTlE3VlhjdHlwODJ4bW5LbW5UM2d5N2lZTU9KdnEKY0RwS0tIYzZNam9RUmR2aTdu
eW5oZmpFTk5PemJzWlhuYnpaV2NWemo1dlphWVhtcnBOVVdOZHdELy9LOE5CemhvWitZZHJSdzgw
Lwp0Rk9pYXN5UDlmTS9BOU5BaUtYRk9PVk5aMmd0enk3bmRveG4vL1B6OUZiWlZ0aVpIdjU1cHk0
c3lyYm5kaTNqNC9XY3pGbW02bzc4Cm4razVSY20yTkhTQzB5TjRGaGQ1T2p6RTBOQW96NWRidVBa
UkR4VldFMWFyU21ETW5VVmZKcHhGc3d6K3NwR25OZUlCTjc5TTU1RzEKcmhyN0laV3phcXZrWkpX
S3p6MlBkM2FHNmVkUnpsNTduNVlLNjk3clpxMlY4UjkyMWxlYm80cTZITGFkTjMxbFp6My9ZWEJt
MDQ1SwpYUzVLckFxZzRpZ3lNZXAzY2JhOUt2Y2M5QzcxZUsvdFFqN1o4NWYvQW9PL2JHOHZYSzdh
bkRyS2Eydm1jTlkyTXAvT2M3VW5OajJZCnZaMnhiTytEWkgrK2tkWEpuN2ZYMVpvbXFxeExCZG50
NjRMcDAwOC8zZC91emwzUmlVVWlST01hdXE1aktTN0ZzY3RHVFMwZUpSS0oKa2REQmJMRmd0VnF4
V3ZJL2M1RHlSaVBycUVYcGE2cGZNRVl0U1VJSHE4V0VyaVZSVWh1ZnRiREd2UzgxT2o2MFVHbEpr
a2dOQmE5NgpFdlN2cTN6UWVkQjVUaEtQZ3lWMXdsQzZMTmtGVHhMWGpHbFRhNWJQeWg1b3ZsSnBv
WUFsaTB5NmxvckhsRjJXamZ6RlltQXliZVVSClFJL3BMSytDbzlTRTdXVjh6amtMdWhZakZ0TklZ
a0kxVzQ3SXZqVmljUk5XaTRJV2p4RlBhS0JhTXpaT0Z4Sm1kK0t4S0FrdENaaXcKMnJPUHBPNkdI
dGRRMHZXaXJ6THdsNjlJWExqRnVjYURhVngxTFc3SWFWS1BzSTNaaGVnOGYvL2JkN1RlK0pqV0Yv
Nktsa1kwRWlXaApLOWdkOWdMS1FTY2UwMUIzbkRqMUluRWV0SXg3UjQvSGlHazZxdFcybzEwM2JB
Q3MxblJYYjZjZThzV0JGaWVtZ2RscVFkSDFQQjhQCnpCYTNsbXFYVXdjdGFCcEsrbWx2dWtaYzAw
aFNtSTNtbFhPM1o3UHFZai9rSzlOOE5oWm4vSjkvWmFieGZhNjJsaEtMNllaT00rTE8KcTY4OWNa
amxET2dhc1lTR2FyYXk4NERBZzdIN3ZQTG1UTCtRZWc2ekE1L3gzUFVoNXhvSzJkQjh3UFU0cCt4
N0wvL3NPaXJFMXZZUwozNGJZMmV0UW9YV3JzSEI3dE50WG5FTjBRSDViZlBiWjY3S3FUaWlVVHo5
OVhTWXFCVDB5eXorK3VNZWJ0ejVKKzREWmI0aDRnSi8rCitnMWN1TW01Z3I3SUxnaS9KV0tNL2Yx
ekJ1b3Y4MmwzM2U3QmhRTW50akxMOUpLTzB4Ym03ajAvTi8vY1M5bHIxcUV0RExHMVY0VTkKSDhQ
N3Y1V0Q3S3lHWitOOGVXL0w3M05pSEZQYTFxdnlWcE82MzA4THZIUitxL2tTWGo2S3ZZNC8vdWth
ajM0YXBmUkM1NDRQMDczZQphTXlPakZKeDdTTmFjM3puUlJCK3UyaXN6RDVqSUFnRXg1bHBLS1cy
cXFTQVkvMkZnMlJ0YnBUK0FlT0EyL2JMSC81R25RK3h0VmNKCm1RRjVTV2hSSGYreWNZU3N0Y2lF
czF6QitodW84TC9WZkFtQ0lBaUhnQjVsM3JOQXdteEdRU2NXVTZocHJNTW03NDBqUll1dTRGc0sK
b2RqTHFhbDhmYjRsc1NmRTFsNHB4QUVSQkVFUUJFRVFCT0hJRUw5UEVBUkJFQVJCRUlRalF4d1FR
UkFFUVJBRVFSQ09ESEZBQkVFUQpCRUVRQkVFNE1zUUJFUVJCRUFSQkVBVGh5QkFIUkJBRVFSQUVR
UkNFSTBNY0VFRVFCRUVRQkVFUWpneHhRQVJCRUFSQkVBUkJPRExFCkFSRUVRUkFFUVJBRTRjZ1FC
MFFRQkVFUUJFRVFoQ05ESEJCQkVBUkJFQVJCRUk0TWNVQUVRUkFFUVJBRVFUZ3l4QUVSQkVFUUJF
RVEKQk9ISUVBZEVFQVJCRUFSQkVJUWpReHdRUVJBRVFSQUVRUkNPREhGQUJFRVFCRUVRQkVFNE1z
eTdCUmpYeDQ5Q0RrRVFCRUVRQkVFUQpmZ08wS3ExNTc4c01pQ0FJZ2lBSWdpQUlSNFk0SUlJZ0NJ
SWdDSUlnSEJuaWdBaUNJQWlDSUFpQ2NHU0lBeUlJZ2lBSWdpQUl3cEh4CmFqa2dTWTNZNmpycmF6
RVNDZU5TZkMzeFVrWFMxN1hkQXhVaTkxSG1UZE9JcitzSEZGZUNXQ1JmWEVsaUsxRzA1TUVrOTl2
ZzZIU1MKak1WWVgwdTMwY3kwWDBDV2c3U2pRMlNuRGdSQkVBUkJlSlhaOVJTc0xYU1dmaHhnYW5x
M2NIYWFiN2JCa3pFbUp5STc3c0hXdGNxego3VFMzRkFNUVgxcmk2ZDBwSXBSeTdBUXNUb2V3VjBN
azFzRGJmM1FSS0RqdGRpcExUTnZrOXY4NHdHVFdaKzJVdHppcFBGbE5SWlYxCjUrMWtsTWt2aG5C
Y2Y1dmFDalZyaXZubHJrVXRNRXgrQ3ROOTVUdXRPQmJubVprT1llOCtROGRweDY0eDV5UVpZKzdo
Rko2Y2NTVUoKUFpsaWJOQVAyRG56Y1FlT1BWalRiNU9qMW9tTy82ZGZtZkxhT2ZOeE8vcXo5TFF6
Zis5QmxtUU0zOE9wZzdHalF5ZGRCMktEZ2lBSQpndkE2c0xmWGRRTGdHRys4ZjV3eVc1Um5meHNs
QUpTL2ZZWlRyVFpXM1Y2ZS9PUWpFVGZoT3R0QlVja3pSZ2NEQUxoKzEwbmpjUnNrCmRkYjlBWjdm
blNTK01XZ1pXelU2NkNlYTZYbTNFZ1ZvZW5zVjl4ZFBpRlNiTWUwcGJSMjJkZWtWS3Q4OWk2VjBq
TEdoRUFBTlY5K2kKdGtySDkrQlhaaVlpQkNibXFIK3ZtenFYWlZ0MjQvTkxCSURBV0pDYWR5c3hr
VUVoY2hjU3BnQ1NFYWc4MjhieDR3N00yaG9UWHo0aAo0R3pnelQvVW9LNUhXSGc0d29wdXdkVmRS
MkE2aEtvVUduTU9URlpxT212d1RJY295aHFYaWRMVEoya2p6dGlnV25BK1hockpHQ3NMClNjcGNS
WWVZeUZIclJNSFc0S0xjVVl4Vk5XSFpsdllMeUdLeUhwd2RIVHJwT2lqd2tTT3hCVUVRQkVFUWNy
R25KVmh4THpUKzhRUmwKWlNxb3ByU0hUV0JTS1RsWlR6MmdwVlp0S0phdEVQYlMxQXhEUElGU1hz
bkpTeTVDVVNOZ0lyQ2FtaGRKc3JsU3BLaUVFMzlzaElVRQp5WDJrdlRPalc4dWRGRlVCazVWakhZ
MmIxN3pldFl3bk5KWkg1NHcvcCtkWXlieGRvTnlGaE5tZEpMcTlub2FXVWl4V0JaTlZNZkx2Ck1H
TldUYWpGeGRTK2N4S0xuZ1NyaWdwbzZvdDNIRTEyQytVQU9lTXlZYllVMnV0N21lZ3MvL3dyejVl
UFlwbk8wZXJFY2JLUlUyOVgKWVRGbFMvc0ZaRGxBT3pwc3R1dGdONDdTRmdSQkVBUkJ5TVllWmtB
VXFxNjNZeXJMOTVaWHFmNWpPM3JKems2UG5uSU13dVBqQkZ5bgphYWl0bzkxdVhOdnNtazlQOGN0
MGdLWkw5VlRXMmxHY0xqcXZyNk84WU5vQWlpMTkrWmVSbmtuZENtdlBDSjljQ1RLenNQRXJnbWNx
CmhMT2pkSHVZWGVXR1JBRmhBQ0xQWjVuOHQ1ZWlNeTJjZkxNaVkxbVdpdXZkdWp4NUI4cXFhQzRE
dEpTbkZJMncvR1NPaVVFL1VFN3IKKzgwNHkxS3BSVmJ4L1BpRXVRV2d1cExtTjQ5VFdXWEpFVEZv
NFRDTHYzcHhqd2F3VjFkUzEzT0NDbWVHbnBNeGZQMHpCRUxyMkZ0YQphRHloNHZ0eGtrQUUxUEpx
bXQrdU1QSmFZTnF4NENvcjB3dEVIRldVYVV1TS8rS24vdEtiMURsanVaOVBSUEU5bW1abUlnVFlx
ZXlzCjVYaDdKV3MvRHpBeEFUREY4R0FSRFRlYnNhNzRtUG5CajFvUEFhK1o1dXN0VkZhWVdWOEtz
anpqeHgrMlVkY0lFejk2Z1hLYXI1K2sKY21NWjNrWTZTd2tJZ3F2VFJWbTVpc2xlUWxsRkZqMFds
T2Nrd1Y4bjhDeHBtTEZRMDFOTGZIUUdYd1RNTVNqdE9rbGRQZmgrbkdGeApHaHB1dGxDaVJna3ZC
RmtZWGFmdVdoUEYrMWwrbEVObm05TGxzYU9JZCs3d2RGaWduV2lSeURZZHFNSDhhUWY3TTIyaEJh
ZHRIZCtqCmFSWkR3RUlJKzVtVDFMZFhVWlJEbjdueXZaTWtxeFBQbVI2UFVXVFZXTWRCODhVRzdH
WWdzYzdpSXpmdWlRUjJKOWhkcGFBVmMrS2QKVXBaKzNyMGU1WkpoWC9WR0VBUkJFSTZZUGMyQVdD
cUtNZTh5eW1oMlpsOEtvYTJ2RTVuek1Ub1V3UmlVTlZQc05GN2FsdExpdEpBQgozTjhQTS9DWE1Y
emVDTGFLSWt3dm1IWW1pcUlBT2dIMzB1WTFaMjN4dGpBclQrZHcvYTZWV3FmeE96TGtJNXl4Wjd3
Z3VRc0lBenByCmJpOFJJREM2UUNTMmV4N3k1ZzhJRFUyeW9KVno1cjJUbEJKZy9HYy9Pa0JzbGJF
dm4yQjVzNXV6bjd4Sm84WFA1TjFCL0t2WjUySVUKSURUcUpxaVcwL3kyaThpQ240bC9QQ08wbmhI
UVpNWDFWZzJoaFFpeGRSMnc0SHEzaFhKQ0JBS2E0WVlWbW5ZeVFkZ3pqM3ZVajYvLwpLZk1yQ25Z
Z3VocksvWHd5eXN6blE0VEs2am43NTdOMC9hNFUvOUFrejJlaWxKNXV4UTZVZGg2bjdVOG5LVk5Y
R2Y3QmcrTzlOazc5CnZvUFRuUWttdjEwZ0RpVGo2L2lmK29sNHZVd3NXRGg5cVlsU0FrdytXamIw
UnhML2owUE1oQ3A1KzQ4ZGRQMnVGTitRbS9FZlpvbkYKcytpd1lIMmJjSjZ1cFdnaFJNanVwTXhw
NTlqWjQ5Z1hRb1NzNWRUVVd3RXJGVTFXSWkzSGNKYVlpQzJIV1JyMUVBanU4ekNEUERyYgpMUHRj
ZGhSWk9Ud2Q3c0ZHTTNXd1c5bzdiTUVleGYzNUVETlVjK1pLRzJmZWJ5RXlPc1hqejJlSVpwc2t5
WlB2SGF3RmVOTHZvK0c5ClU1eTZjaExuUWhRTklMbk96T2VQY1hPTW5qOTMwUEdIRnN4UGZmaERT
VXlGMUtOY011eW4zZ2lDSUFqQ1MrRElUc0h5RGs0eS9QMU0KOXB0MkoyOWZiMmI3L0VLSW1SK0dH
UjVlT1hCWjNQLzRtZjYvRERBeEdnSm5PWTJYT21tb1RSc05qSzNpbWJEak91NmtxcTB5ZFRHQQo3
M2wwNzNJWGxEY0ZhMFVxaExNVTZ3c09UT3FBdmJPTnRvNEtISzRxcWx1QWhYVVNTUWhQZWdsUmly
b2VJVGdmQlp2eHpKd255eHF6ClZGeWwzYWM1MVZGRjVSdU5kSnc3Qm9Ud2VUSVBHRER5VVo3eFcw
M2x4Y1FlMGphWnFlaG9wcWthcUc2azlXd1RIYmZmb1ZwYnl2bjgKdW1jV0h5NGEzeWdCb0tqMkdM
WFZwWlE2ekNoMkswV0Fhak5qdHFxWUZJVlN3TDR4WmFBV0FTRmlDYkRWSHVPWTAwajM3YlBIS0tr
OQp4ckVUYWJKcFVZSmVzTmNWb3dKRmRjY29COHJQdG5ETXRmTWdnejNwMitxZytvd2RwaGNKeHdC
ek1jYzZTMkVoUUhqZEtJM2xRUjlOCnJZYXQyT3VQVWJkcG4zc25uODZNMUhMYkVZZW93NzNvTEZN
SHU2V2RhUXZybmprV3NkUFdaY3dzS0dVVm5QcWRDL0F4TzVOUjM4bWYKNzB6MDFDYTNsZmsxd0Vy
dHRVb1VIV0tlT1h5VWN1WXRZMDhZcXBYaSttMko1SzFIT1dYUTlsNXZCRUVRQk9GbGNHUm54alM5
Mjg0eApaNEs1Znd5eVk1dUdwcU5XVk5KMnU1U2cyOGQ0Lzl6bXJjalFVL3pIMzZFeTcvS3J2VkYv
cVl2YVl4YVNtRkN5VEt0RXZWNGk5VlVvCkNSMUtTd0UvQVA2ZkZxZy8yY2ptMXRWQzVIWWtDOHBi
YVVjYlBhMGFKdXZCYkY0dXNtMU5CZG1xS21FaVRGelRpUzZHb0w0V2s1NUEKUzRDNXBvWFdHakE1
Y20vSVZkUDM4dFJWWUdlUnJPZTZwZ1RQdnJwKzcybWJMRUE4bGJhYVpEM244eGJXSnZ6Z2JOd3lh
TE9kaGl0dApLWUdNS1NWdFE3Q2lFdHIrL0E0UnI0K3hyMmN3amliWU9tUkFkUmpwYnZ5MlY1ZkQr
SGJaSW9zUjlOUEZLS29aR3hET3V2bG83M2t1CmJhcUIwU21XZkRGS2ppZFpUQjJjNEorUFVWb1RZ
U1pZejF2T3JmSkk2dnM5SmpmSjJ2enVPc3R1UjJBOU5CM3VYV2VaT3NpZnRtRzMKRzdZUUMwYUFJ
dEpXWTJJdE0yWXQ5WGdXM2U2UzczUVVSekdWZ08vSEVYeWpsYlMrZXdLbk5VbHdmaEZ3YlV0ekcz
bnIwZTR5RkY1dgpaQk8rSUFpQzhISTRNZ2RFMTQzbEJKVWRMcFpTUzFWaTNqbENEaGMyenlqK1ky
MDB1aXc0V3hvNDIrUmkrY2x6Sm9hTWpuOUN5enpaCjZzV3dGRmt3bVpVY0hmMFlTeitGd0puZzZk
MzVqSHMrL0w0NjZseUcyc0pQZHBjNy9PUkp3WGxUQ2o3R1ozZTA5TjZMYnFSaEFxUEUKRXpZcWp4
YytjcjR0THJNRk8yUmZjckliKzBpN3NPZDEvQWtncUtGUndMUmVjcDNaTzQveEJtdnB2SDBXWmlZ
WitpbGZSejVOQWFvZAoxOXZsK0grWnd2M1VUTFY5alRtZ3RTRnpGOUZ1TW1mSFZPYWt3UWtlZDRC
SzFvbTBORklmbmNFN3MwVEphb2pLZDVzT3FOSW1TUmFnCnM1eDJkR2c2VEw2NG5lUkxleHRKTk0x
d1FOSjlHRlBLY2NocTQzdkp0N21ZNW8vYXNmMW5CSy9Yei9nLy9EUmM3Y0ljQWtpUTNHK3oKdGxm
ZEg3ZytCVUVRQk9IRjJQOFNyR1J5NTB4R3ZvUlN4M2xhNnhxb2Naa2hFV2JxQncrWVFMR1o4VDFO
VzJxbFdxam9PRTd0cHBBWgpyc0llMDk0cFRPNWIydElTY3pUeTloODc2RWo5NjdtZWRscldjR0N6
TzFPSTNJWG1MZXFkWmZndi9Ud2JEaGFRdDkzblNOVDAwNHVVCmpReWJqQ2U5VS9oWDBsS0pyZkxz
TzEvT2J0cTJrZHBZSEQ5Z3ovYkJoWTFKa2MyMDArWGNYOXFnYnh3WmtPZjVSWlJpTytCbHlaZlcK
YlZ3TDh1eEgvNVpZS2JuV1orYndCcUgxd3dac0tsc25KR1NhMmVaZjIzdUpqcnB5d0k3RGttQmRk
L0RteDJkeEZtYy9xbmp2ZVRaVAowZUVDN3d4ai8vYlIwT1dpK2xRdGVMMU1EVUZOL1VHTldpdFk5
cUF6NDVHdGluTjRPdHl2bmV3a1Y5cGIrVEpoSzZzRUFxeUYwOUphCmorRW5JKzhidHdyTU40Qyt2
SWh2MVViZDc4L1NkYWtSTytCeHIyR3RNZzdFaUc3dW84cWh0S3oxcUZBWkNxazNlOU9uSUFpQ0lC
d1UKKzNaQXRHQ1lRT3J2Z0dlVmJOdGc5YlJsS2VGZ2FtZTFZaUt4SE1SOWQ1UVFsZGdkQ21BQjd5
VHVxZkRtdXplNXVrWVFvTHFSOG9ydApZaGFTZGlhSjZGWW5hejJjYS93K3prSy9Gem9kMjc4a1V1
SEV0ZkZqd2MzQzRrYUtoY2hkU0JpTmxjZXBUZWhEOCt6NmdmUlkzRGpQCks2N3ZQTVkzNWVnRmxy
ZDJza2VYak5rV1RDYWNyUTBBVEg0enl0enpFS3R6UzR6OTdRbTJqc3FkM2JSa0VnMElyR3pvU3lj
NC9oU28KcDdZK3RkOWhvd2RqQWxRRk14RHE5eEZhaVJGNitwUXBMeEFMRTE3Vjk1WTJPdkU0c0xD
VlFMN255MDRZSmVUNTF5QXpFOHNFcCtmbwovMnFjaXM2S3pYNVpZQ0ZNSkJoa2NkSElUMkIyaGVq
eU10UDlBVUJqYlQ1RWREMUpNcFZkdytxU1JCWUNFSXlrUnNSamVMNmVvdlNNCkMzdEpFVmFiUWl5
NHhucjZGOE0zUmQ2anZsTVUxVllhZXdCYVdpZ3JBbk4xQlpXQS9VeHQ3cE91TmpLcDdmSTdEVWMr
bmVXMW80MFoKemNQUTRmNTBscDdIL0drYmJOaENpRkxzd015amVUWnlHbDBNQUtYVUh0ODVxNVUv
M3p0Q00vT3JIdzBvcW5YaGNnSjJDOFUxRlVDRQppYS9jckN4SENYdm5qWHF5c2ZjcmJ6M1NkcEZC
MjFPOVVZSGtpcC8rdi9Rek9aVmx6NHNnQ0lJZ0hBSnFWMWZYLzgwWHdKLzA3N2dXCmV2S01vVDdm
MW9XMUZlYUhJemlhSzdCWlRJQ092MytFOFpIVnJTQ2VCV1k5QVdZSFp2Qk4rRmxiQitwZEhHOHFK
dUZiWUZFdlFYMDYKZzN0NGxvQm5scG5IZml3dGpadys3OEtxN0NYdFRIVDgvVC96Ykd5ckk3VTY0
eU1RdDNPczFwN1dMOVB4Ly9pSWFSK3dzRWpjVVVGNQp1UVcwQ0RQZkR1Rkw2MXlFcHVheE45V2hC
bmFYTzE1UTNoUzB0UUQreFFSUVNWMVhXYzRUdjlhOXN6ejZIN2ZoZEsydE1PZUo0S2lwCndHWTFw
YjVnUFlFdm1JQmxQM0Y3Q2NxeWoyZkRZU0JLT09IQTFYSU1wME5qMFJzazlIeUpwZWtBeDM3WFFY
MWRscEYxeFl6RkhNTS8KNG1GMk9NRHM4QXorNGtZNnI5VlNwQ1FKUFoxbTlCZS9FZmVpaHEybWty
SmpTUmFlKzFoNjVpTldlb3dTZndocVNyRFppaWlwcVNncwo3ZVE2Y3cvRzhjd25nQkRocUpXeXVt
TE14U1U1bnpmWmlxbXFVZ2hOaHdqT0x1UDNKR2k2MmtGVnVRcUtCWXRwbGFWeEh3dlBkT3JlCnFV
YWY5T09mOWJNUXN0UFE2U0RnOVJPY01XRTMrWm1lanNKYWtMalZnUkpjNE5sb0dBZ1QwUjFVMXRp
TlRjU2VJRXRUU3l5NWwxaWEKWE1UM1pJNmlSaGZhOU13Mm5SU2ZyS082WEM5TTM1dDZ0Nkt1Qm5D
MEhxZkViZ0xGZ2hvTllHMnF4MkhmTUF4RC8rNEJQd21paEJmago2T0VnejM3ZFNsc1BCN2I5dHJu
S0tFcXJJemwxNXRSMnRhUGFFOFZFbng2R0RtdHhWSlFXYUtNN2RhQUZsNWlaV2MrZGRtM3BObHVv
ClBkdEEzVWs3MFYrbm1SNk9vRVVYbVhxczBmcCtLNlZaWnJVc1ZwVklqbndmTzFOTyttZFhrckVJ
YzcrNm1WdUlvODE3OGE1WGN2cXQKWTlqS1N5Z3hyK09mWDhJL3NjQ2lwa0lvQ3FYbDFKMG94bVF5
WTNQbXJrZk9xcUljTWlReEJlZVo4eFZlYndDUzBUQnp6NElVdVk3SgowYnlDSUFqQ2dWQnB5ci9z
MS9UcHA1L21QWXR4WEIvUGQvdGdTR2dremNiYWNtMDlZWXp3cVJZczFsZjhJMmlGeUwySHZDVWlj
UlNiCmhTUDUrSFJDSTZFbFVhem0zZE5MSnRFMW5TUUs2bTVuSVFOb09sclNaSVRWMkxrQ1ppOXA3
MVgyWkJJdHJxTllWRXdaOS9TWWpyTHAKelNiUkUyd2RRcUFsODN4d01TMzZ0UldlZnJWQTNhMlRP
TXhKdE5SbS9QWFo1MHhIWFhSME9QWXVjOWFFa216TFFPYnZneVNQem5aNQo4SEIxK0tKMmtvZnR0
bURrSlJHSm95Vk5XSXN0dXl4eTNHTytOUjFOQTlXNmZTWTNtZERRZFFYVkN2NGZmbVl5M2tUUGxX
TmIwOUo1CjY5RStkSjlIbjhtRWpzbDhaSWNpQ29JZ0NMOXhXcFhXdlBlUGJCTjZYc3hiSnorcFJl
WUQzRzUreUJRaTl4N3lacllmNGVpaldjVmMKYU9tYlRDam1QWlNLcW16bE05dGplMGs3Ry9tZU41
bFFjMnptMzk3aE5LR2t4MUhRRjcrVEJINTlTb2hhbW9wVUZEVzF6RWRMRUZxTwpVTkdVWjFaanIz
bk85QVFPeS9sSXhaMUxaN3M4ZUxnNmZGRTd5WU5pemV4c216RGJyUVUyaUh2TXQ2cGtQZkhLWkZa
VDFTTzVjeW5sCnhuT2JmNytnREpCWG4rSjhDSUlnQ0VmSnErR0FDTUpyZ1FsSFV6MU1lM244MXpu
QWpwMElFY0QxYmp1Tng2UTY3WTdvY0R0SjFwZFgKV1BFQ3VGbjBsZUp5eWZHNGdpQUl3bStiVjJN
SmxpQzhSaVRYMXdrdnJ4dXJZb3FzMk10dGhRMytDNXVJRGxNa0U2ek1ySkMwbWpHUgpSTk5WeXVw
TFhwOVpZRUVRQkVISXd1dXhCRXNRWGlOTVJVV1UxTW9vOVlzZ09reGhNbE4yUXI3UElRaUNJUHp2
UWhiK0NvSWdDSUlnCkNJSndaSWdESWdpQ0lBaUNJQWpDa2JIckVxemQxbkFKZ2lBSWdpQUlnaUFV
aXN5QUNJSWdDSUlnQ0lKd1pJZ0RJZ2lDSUFpQ0lBakMKa1NFT2lDQUlnaUFJZ2lBSVI0WTRJSUln
Q0lJZ0NJSWdIQm5pZ0FpQ0lBaUNJQWlDY0dTSUF5SUlnaUFJZ2lBSXdwRWhEb2dnQ0lJZwpDSUln
Q0VlR09DQ0NJQWlDSUFpQ0lCd1o0b0FJZ2lBSWdpQUlnbkJraUFNaUNJSWdDSUlnQ01LUklRNklJ
QWlDSUFpQ0lBaEhoamdnCmdpQUlnaUFJZ2lBY0dlS0FDSUlnQ0lJZ0NJSndaSWdESWdpQ0lBaUNJ
QWpDa1NFT2lDQUlnaUFJZ2lBSVI0WjUxeEQvK093SXhCQUUKUVJBRVFSQUU0VGZCSHovTmUxdG1R
QVJCRUFSQkVBUkJPRExFQVJFRVFSQUVRUkFFNGNnUUIwUVFCRUVRQkVFUWhDTkRIQkJCRUFSQgpF
QVJCRUk2TVY4NEJDZXV3cWtNMGFmeU82S0MvUkhuaXlaZWIvcDVKUWlSNWNIR0ZkOGw4V0lQWUFT
WDNXK0dvZEtJbGpicVNMKzE5CnkzS1FkblNJWk5QQks4K3JxdHREbE91MUxDZEJFQVRoME5qOUZL
dzBKc1B3c0lEZVRLOFRpRURmTG1HYmlxRzN5UGc3a29CL2hTQUkKdEZoaElnWk9Nd1NUOEhFWmVQ
YVFkbE9HVytVTzd5NUxTekdjSzlwNXZTOEF4MHFoUFl1bXNzYXJ3bHNxUE1weS9XWXBsSmwyeThG
TwpDdEY3VXpGVUptQWdCazQ3ZkdEYmV6cnBqSVJoTUU5YzgxSDRMbUw4ZmIwY3F2YVJyOThhUjYy
VDZUQThqQnRwSmRhM3A1MzVleSt5CmpJVVB6bzRPbTNRZHZBNDIrS3JxOXJEbGV0M0tTUkFFUVRo
Yzl1U0FrQm9kdTF3R05RcjhFQUF2VUcrSDM5dGdhUjN1cnNHNkRtME8KS0ZIaDIxUW5xTTBCUFZa
ak5tRXRBUU9odE5HMlpNcjVzTUp0QjFpQXM4WFFINENnR1V4N1REdHpYcWNwanl3cmNmaG1kV3ZH
SloxSQozRWpEdXc1dFpsQXo3amM1b05RTWQ5YU0zeTRiWExVYmYxZW5wVmR2aDBzdjhGTFhkTVBC
ZU1zSzFpUThDSUpYaFE5THdaS0VaMkdZClMwS3JIVHl4dlJacWR0cnNoZ1BpeUhHL3hnWlhNRHE1
cjBOL1lqWU9kWmJEVGVPb2RWSm1nWG9GaWsxZ3owajdSV1E1U0RzNmJOSjEKVUNoSFlRdTVlTlYw
dTZHTGc1QXJuMTczVTA0SHhjc3NiMEVRQkNFN2UxcUNGWTFEVHhuVXFjYUQ2VzI2QWxRWFFSY1FU
MTFUMDE0MgpwUnU5OXlTb0tyeGJBcjVVcHorYU1HWStVcmVOK0V6d1RobVFNSzd0TmUxTXNzbWk2
V0N6d1B0MjhHWnhRR2FpcVQ5aU1KZGorVUJwCjJodmJuSlpHV2RyMW1oZnNiZWdLdkZrRWRwT1JE
d3VBQWxZVFdCVTRYUXgyREoyWmdjUUJ2T1JWRTlSRDN0NXIwZXZnZVFBellYaWsKSFUxYVI2bVRx
aUs0bENyN2JHbnZWNWFEdEtQREpsTUh1M0dVdHBDTlYwbTM2YnA0VWJsMjArdGV5K21nZU5ubExR
aUNJR1JuVDEzagprNlZneXB3R3lPQlVHV2haM0JvOTFjRmZqb0xIQXQwV3VKRUt0OW4zajhIbk1U
aGJBazBXc0tTV0xha3ZtSFl1V2J4aENOcWh1d2h1ClpEZ2dtZ1lEaWEzZnY2NUR3MTdlbm50NGtR
ZGkwQmNHaHczZXRZTTE0MzVicm1tSUZJb0t2U3BiaXRRTjUrbEJhZ2JtWWhrMHBIU24KNi9BNERD
TUp3QXk5ZG1qS1l3VUpIY1lqMEI4MWxzUjFGa05qbG5JWUM0TkhoL0lpWTNacDQ3ZFpoZDVpdzJr
cU5PMndCck14Q0NuZwpTc0w5Q0hTVlFMdWE1L24vdjczNy8zSGp2dk03L3VKKzAwb3JXWkxQWCtQ
YVNTNk9tOFQyQmJtZ1JYNXdpc1IzYUZPa1FKR2doZnJuCjlNOXBVS0Q5cVdoYVhIRnQ0aGh1VWxl
Rnp6NWZzMXBpaUFBQUdkZEpSRUZVRlNXeDdMTjkxdFcydnEyMFMzSzUvZUV6NjZVb2tydGMKU1cv
SHp1TUJCUEZxbCtUTVo0YmtQSWN6dzkza3dzMTJHRW1TZkhFOStlYng1S1BONU9YdTMzNTZLM24r
ZExJeFRNNXZKaXVyeVh1RAo1RHVuMnYzY0dDYnY5Sk5MbytUWnRlVGx6WGE3dmQvZjlqZzdTWGFT
WjlhVFI1YVRwYVhrOFNuemN0aDVmdmRXOGxmRDVGaVNaMDRrCnQ3YVNpNlBrMkc3N1pPM1pia3gv
MjIvejhIQ1NENGZKeGEzazJWUEpnMGZaY0p3eFpwK3M1blBXb3l2OSt6ZUdoeDJ6L3VqMk1WamIK
bWYvWTcwNVpGNTdvdFduNTdTakpNRG16bmp5M25weWNNWjZ6NW51YXY5OU9YdDFPTm5ySlpwTHZu
RXpPM01YWVhodTJUeW11OXBMSAplOGtyM1cyL2RUSjVwdHNqYytqMWJYSXNIamo2ZEUwZDE3SFg0
Y25sOUdCdnh0aE1qUGtpNjlLMDVYZlFkTTFjUnIxMnZ4ZHZKcS8yCms5UEx5Wm1WOW05L3VwRzhk
WWpYdWxsamRhVFhOb0RQb1lVK0FUbStraHgwSk5INmNuc3huelRZVGE0TWtyL1kycitQQjdzM3Rt
TVQKRzdTdjNrait3OGZKaFg3N0pHSDVMaDk3MHM1dThtRS9lV1hZM1djdmVYQmlKUDV1cTIzNGY3
MmJ0cXRieVlmMzZRVE5qL3Z0RTZEMwp0dG81TDNkak5jbmxyZVRpYnZMbko1Tkhrcngwcy90a2FE
ZjVIMWVUOWVQSnViUEp0M3JKSzlmYkcveTgrM28vN1EzeDZqQjUrVnJ5CndaUnBmT1pFY25tNGY2
THBNeHZKRTBuZTIrbTZhSUhIL3FqZmd1ZkN6ZVRDVG5JNnlmWFIvTnVmdjVKOHNKejg2N1BKRHpl
U1MxdnQKUEp4SGpyZmJQN0tlZk85TThsaVMvN0taL05ISjVMc25reGZYMi8zY1NndlRTOXZKMVVI
eThpQjVzUnUvVjI3dGY3SjJhVE01UDJybgpKZjF3STdtd2xieTBtV3hPVzI0THpQTVQ2eTJNTGk4
bGp5MG5UNTlJemd5VHk3M2ttYTVJbjF4cmh5ayt2dFFPWTd5MDFjYjNxR2FOCldYTEFlalM2ajJP
NHdKaE5qc0ZCajMzSHV0QkxmblVsT1ova3owNGxmL1pBY21VcitVOVhrbXZUbHVlYytiN2pUMGZ0
a05EblR5WGYKUFpWOFliZy8vMGNkMjFzN3lXdmJiWjdmVC9KUE50cjhuTCtSWE5wWmJPenVHSXVs
bzAvWHRQdWF1NXptak0xdFkzalF1clE3Zi9rZApORjN6cHVQOGxlVFZKRDgrbS96Z1ZISnN1NDFq
TDRkNHJac3pWa2Q1YlFQNFBDcTdDdGJydDlxNUZsTW5ZaW41MGFuMjVqTHUvR2JiCmMzV3ZYNGRm
dTVYOHhlYWNQOWhOL3FxZmZIVXQrZExZaWVtL3ZrK1hOanF4RjJETGQzK005Q0RKNmU1Y2xEOWFU
WjVlU3pKc1YwTDYKY0R1NW5HUjFsTHc3eUNlZjBydzVZNzcyTnRxK2U3enRIZjluSjlxL1g1ang5
MStZK0htMXUvL2Vnby85NVBIazJ5dEpWcElYTnBJZgpuRW0rc2p2NzlqZjZ5WVVrZjdyZVZ1aVRx
KzJpQVE4dHRXbllTTEt5bEt4M2g3QTlrclpYODVPSlMzSnp0eDJuL3NmTDdYRi90SkU4CnZOb3Vp
UENKM1hZOCtlblY5aW5WeWRVMnoxODRrVHc5NVJqemhjYTdsenk5bnFTZmZMVGJmdjd5ZXBKaDkz
T1NkMjRsMys3bThjeGEKOG8wcEYwMDRySGxqbHN4ZmozSWZ4M0NSTVpzY2c0TWVlM0pkMkJ3a3Yw
M3l2VzZ2OWVweVc5K1M1SzluTEtOWjh6MXBwL3UzeTkwVwo3ZGRPN1o5RGR0U3hmZlJZOGlmTFNZ
NGwzMWxQSGw5THZuZXkvZjd0d1dKamQ4Zno0aTZtYTlwOWpadGNUdlBHWnR4QnkvUGFBY3Z2Cm9P
bWFOUjJiM1hQano3djdUUzg1TS9IOG52ZGFOMitzRm4xdEEvaThLdnVROTlzYnlkUEx5WnZYa3Nt
ZHRxUGRaR1VsK2Y2WmRvakIKU3pmM2YzZDFLM2xuTGZuaUFZZGZMVHd0UzIzdjJUVFgrc25WMVdT
NU8xOWx6NldieVhQSGtwUDNibEtTSkk4ZVQzNjgzbzdEdmhlegp1VEdXbGFkV2t2VGJTZmJYaGts
VzJ3Ym5jRGM1dHBxOHNOb0NjSmJ4ODFyT3JDV25iMmJzbUxrN0RXZjgrNktQdmR3YmU1eGVPeHhq
CjF1MC8zazZ5UEhib1dpLzVrMVBkZjNmM01SeTdyKytmYllkSS9PVm1lK1B2L2psSnNyclViclAz
OCttVkpOdTNUOXZWYmsvcGFxL3QKd1p6MXlkaWk4L3pJV3BLdDVLMUI4dkJhOHJ2dUhLUzNCOG1q
cSsyUXBYODV0b0xjVFpoL1BNaUJZelpyUGRxNGoyTzQ2SmhOanNGaApIbnR2WGRqc1hvakd0eTJQ
ZCtNN21MWk1ENWp2eWVuNFl0cmhPUmUyMnNibUUyUHI5SkhIdHBjOE1uYmI5WlcyTVR6TTBaN2Z3
NG41ClBPcDBUYnV2Y2VQTGFlYllUREZ2ZVI1MitjMmFybG5UOFc0WEpLc3pwdW1UKzUzMWl3UEdh
cEhYTm9EUHE3SUEyVHZ2NHFuMTVLMjkKRFlCK2NuazVlYUNmdkwyU2ZHczFlZUpZY202dE93NjUy
d0RidnNlSFBvMjZQY3gvdko2OE8rWDNiOTFNc3R5dXpEWHAwaUI1OWg1YwpVZVg5bThsSGE4bXoz
Ukk0Nk0xdUVkUGVjUGYyekdXM0hjcHoyUGUyeWZzNmsrbUhuQnpvQ0k5OTJOdGYyazZ5MHpZSURy
Tm8zcmlXCnZMNlQvUE16U2ZySmY3NTU0RTArbVlhdkhrOHVkZWZFZkdVcGVUUEpDNU1uN1J4aW1x
ZFpYbTU3dUYvckowOGx1YktXUExlYnZONVAKSHRwcFYxMjdWMWRJSFNVSGp0bk05U2ozY1F6dmRq
MVp3Tjc4amU4UVdlNDJTbWV0NDRlZTcxN3lqODhrcHphVDF3ZkpTOWRhNE8wZAowbmt2eDNZMTNj
YndQUmk3KzdMTXA5emgxTEZaOE4zb0tNdnZNTk94MnRYUzN2dkVVU3cwVm9YclBNRHZpN3Q2dlp0
MXhhbXBEOVM5CmtHK3NkaWRNN2lhLzdBNkRXbDVLTG15UDdTWHJ0WStxdno1bkloZDU3Rm5UY21i
OXpqZTkvckJ0RVAzb2dlUUgzZjkrZkdyLzk2OXYKM2Y3RmJvY1p3S1dKTjdIUktQblpkdkpRdHpG
eXJaLzg5T1BrNTdmdWJyNzJyTXg0MDF4S2trSHl6dmc3OW03eTgrdXp2Nnp1dHZ2YQpUUzRsT1RO
dnB1L2hZM2QvY3VEdFY3cnBlV3RzOEVhajVPZWIreHNuZS9OeG85ODJERjQ0UGY4N1dXWTE3OWx1
US9uQlhuSWp5Yjg0CmMrZUpyWHVPTXM5UHJyZmIvUGZONVBrVHlWZU90WjkvdWJWL292RzlzTDdB
bUUyNm4yTjQxUFhrc0krZDdNL1gzdFh3UGg1N3JGRzMKamsrYjk4UE9kNUlNaHNuRm5lVFprOGtQ
VDdaUGVWN2J2bmRqKzRteDUrUmRQNy92Y3JwbTNYYlNRV016emJUbGVkamxOMnU2WmszSApSdmVl
Y1AyZ0hWLzM2UGx4cjlaNWdNK1NJd2RJZjZkOVIwYlNydkt4TmVWdmRzWmV3RDk1aytpMWpmeGZY
VzhmVFovZW00SkJ1eHJKCjNwL3RqTHI3WDBuK3dXUWtIT0t4NTAzTC8rcytPLy9ra3JaamZuTXp5
ZnJ0VjZKYVhVbWUyZnRobVB4bTdMUDNxMlAvUGY2Ui9QV3gKRGJ2eE44aHJ3K1FYM1RXSDkwNlkv
N3V0L1pQUXJ4ejBwcmViWE9uKy80NC83ZTd2dmVGK3pGMGZtNmpIdStPd1g3bldqaS8rKzBIeQps
MWZhY2QvVGR1SVAwMDZzM0x1dmQ3dERINzYyOThmakU5QnJlK2N2MzB3KzJHbGZ5dmZMUWZ1Ymow
YUxQL2JXYm00YjBIbTNmNlM3Cmc5ZHVKT2UzMjJGOC8vNXE4dFR4L1VQYTNoc21WM2IybDkxN2c3
WXNYdTMyVEg0MGFDZXU3cTBuZTdlN09reXlzMzhVeit0WDIwbXQKcDd2emRXN3VKRGZHeDJIc3Z4
ZWQ1MlQvbklpc3RaT2sxMWZhSHQzVDYzZGVKZWdPa3l2RW5IWHB3WGxqZHNCNnRMZm4rWDZNNFZI
RwpiTnhCajcwM1gxZDJ1dGVmSk9kdnRTc2dKZDNoTUVtK01lWEJEcHJ2U2VkdnRRM0lrNnZ0OE5N
czNmM1lwcGRjN3UrUDE2VnVWLzlYCjE0NDJkbnRqY1dGd2w5TTFmbCtIMkdxZU9qWlQvbTdlOGp5
emVyamxOMis2cGszSDJlNzk1dVdyeWZ2RGRzR1NYNDZkbTNIUWE5MUIKWTdYSWE5dGEyaFVaZi9K
eDhzckVvWVFBbjJYTHp6MzMzTCtkK3hlL2VlT09mL3BnSy9ucCtFbmNvK1QvYmlWbmorM3Y4Ym0w
MmZieQo3L2w0a0x3eFNONjQyZDRJUHQ1TnNwcDg4MWl5UFd3bkU2NXVKNy9hU3Y1MjBONFkxdGVT
RnpkdXY3TFZZUjU3MHVTMFhPMm01YW0xCjI3OHI0ZEptOHVvd3lUQzV0WlE4MFYxNjhmejE1TUxZ
QnNZSC9lVDBzZVRLemVSblkvV3pPVXplR0NiSGhza3Zac3o3eFg1eVBXM2UKbjE5cmI2ejlVWEpw
NzQxenltVjQ5OXpvSi8veGVyY3hOVXIrWnBDY1hkMmY3d3VieWErN1M1dHVMU1ZMTzhsTDNmUjl1
SnM4ZmF4OQpHZGh2QjhrSGcrUjMvZVRMRzIwNjd0QnJKMjVlMmtyK2VpdDVZeXQ1ZTZsZEZ2bGty
eTJILzladC9IdzRURTZ0Sm8rdEpCY0h5VnZiCnljM2xkdGhRVnR2ZlA3emFydDUwbU1kKzgwYnlX
amNlSDQyU3g5YmFIdnRadDE5ZVNyNjAwamJNM2h1MGN5YStmYW83Z2JYYldIaHIKTy9uTmRydU04
S0RmL3ViaUtIbCt2YTF2N3crU0I1TDg3MzRiMjYxZUc3OWZkT04zTmNsVHErM0U1WXVENUsxKys5
L3Yrc212dDVLTgp0YVRmdjMxTXpoeHJHeldIR3UreGNWOFp0ZTlOZUhpcC9idzhhdmYvME5qdWdn
KzJrdjkxcTYwTEh3N2I1WkwzcG5YYXo2ZFdiNyswCjdMd3hPMmc5K29mSGtxdmI5MmNNSDFvNS9I
b3lPUWFEbmVUL0RPWS85dkd4ZGVGcko5ckowZGU2dzhFR28rUi9iclZMeno0NlpkZk0KMmxKeVpj
WjhmM205ZlUvUG50RnU4dWF0NUcrR2JVLzc2N3ZKaXllU2QyOGVmV3kvdko3MEI4bTd3elplYjJ3
bGY3dVR2SGc2T2R0cgp5L1N3WXpmNXZEaVo3cXBMUjVtdTQ4blppWEU5T2ZHYVBiNmNUcTBrYjIv
ZE9UYVRWekI4LzFieXlyeDFhUzM1MHRxYzVUY3hqNVBUCk5Xc1puVjVwMzlaK2FaaGM2cmYzcG95
U0xDZGY3MTZ6VHkzUGZxMTdiSFgyZXRMYjZTNjFtOE85dGlVdHd0N3NQcGx4YVY3Z00rTXIKejgz
OWRlL2N1WFB6OTduLzE1L2N5OG1aYXJTYjdIWW5ZUGYzOXFEMmJuOUQvN3piR3JVTmlJb3Y3QjN0
dHIxKzB6NEJtbWJRZmRxeQpkb2psTWRwdE8vZldldTIvN3pqOGJNSEhubmIvODI3ZjMyMi9tOXli
T3VqK2ZXbnM1NzN6YnFaTjV6UTdvK1JuVjVOdm5HNkhEKzN0CjZid3hTRjRkSlQrWThUMHhSNW5u
VVc3L2VITHk1M3RwMXBnZDVINk80ZDJ1SndkTjkvaTZrTFRuM3pESjhSbDc0aWR2ZjlqNUhuOCsK
TERxTjB4N2o0dlYyVVk3dkgydkxiYVYzNTNxeHlOaE5HNHVqVE5kUjd1dW9ZelBOdk9WMzBIVE5t
bzZkM2ZhSi9Gb3Z1WFFqZVdXMwpIWTY3T3VWMjA5YURSWjhmODViYnptN1NXMkJzQVQ1MS8vVGMz
Ri8vWHV4UEdYOWhYdXZseUNmK2ZaYXRGNzZ6TFBVV081bDVrUlBrCmwzcjduK0JNZThOZDlMRVh2
ZjJzalpuSmVSai8rVEFiemtueTNxMTIyTTQvNnJYYnIzWW5qMTRlSmsvT3VTVHVVZVo1Y25XNG42
dkgKVVRjQTcrY1kzdTE2TXMrMDlYbVI1OThpOHozK2ZGakVyTWNZN1NhWHUyT2taaTIzUmNadTBZ
dGZ6SnYzUmUvcnFHTXp6YnpsZDlCMAp6WnFPOFNpZmRzVzVnMTdyRm4xK3pGdHV5MGQ4amdMOHZ2
cTlDQkQ0TEhod0xVbS9mZEZaMG80L3Y1cjJSV1RmOUV3NkZHTjRkTmNHCis5OGUvMDUzeUdQRko2
Wi82RzRNMjZGUlNmSzdRZnUrR3A5RUFOd2RiL2x3U0J1cnliODZrM3pVZlRuYldxOGRMMzZ2OXVM
K0lUQ0cKUjNkck4zbmhaTnY0N1kvYTRVRUM1UDY3UGtxZVBOa3VCakhjTyt6cTA1NG9nTTg0QVFJ
TFdPNU9xT2Zvak9IUlBHcXI5MVB4dUhFSAp1T2Q4a2d3QUFKUVJJQUFBUUptREQ4RTY0REphQUFB
QWgrVVRFQUFBb0l3QUFRQUF5Z2dRQUFDZ2pBQUJBQURLQ0JBQUFLQ01BQUVBCkFNb0lFQUFBb0l3
QUFRQUF5Z2dRQUFDZ2pBQUJBQURLQ0JBQUFLQ01BQUVBQU1vSUVBQUFvSXdBQVFBQXlnZ1FBQUNn
akFBQkFBREsKQ0JBQUFLQ01BQUVBQU1xc0xQTEhQL25Kdjd0ZjA4RVJuRHYzYno3dFNRQUFnSVg0
QkFRQUFDZ2pRQUFBZ0RJQ0JBQUFLQ05BQUFDQQpNZ0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pRQUFB
Z0RJQ0JBQUFLQ05BQUFDQU1nSUVBQUFvSTBBQUFJQXlBZ1FBQUNnalFBQUFnRElDCkJBQUFLQ05B
QUFDQU1nSUVBQUFvSTBBQUFJQXlBZ1FBQUNnalFBQUFnRElDQkFBQUtDTkFBQUNBTWdJRUFBQW9J
MEFBQUlBeUFnUUEKQUNnalFBQUFnRElDQkFBQUtDTkFBQUNBTWdJRUFBQW9JMEFBQUlBeUFnUUFB
Q2dqUUFBQWdESUNCQUFBS0NOQUFBQ0FNZ0lFQUFBbwpJMEFBQUlBeUFnUUFBQ2dqUUFBQWdESUNC
QUFBS0NOQUFBQ0FNZ0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pRQUFBZ0RJQ0JBQUFLQ05BCkFBQ0FN
Z0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pRQUFBZ0RJQ0JBQUFLQ05BQUFDQU1nSUVBQUFvSTBBQUFJ
QXlBZ1FBQUNnalFBQUEKZ0RJQ0JBQUFLQ05BQUFDQU1nSUVBQUFvSTBBQUFJQXlBZ1FBQUNnalFB
QUFnRElDQkFBQUtDTkFBQUNBTWdJRUFBQW9JMEFBQUlBeQpBZ1FBQUNnalFBQUFnRElDQkFBQUtD
TkFBQUNBTWdJRUFBQW9JMEFBQUlBeUFnUUFBQ2dqUUFBQWdESUNCQUFBS0NOQUFBQ0FNZ0lFCkFB
QW9JMEFBQUlBeUFnUUFBQ2dqUUFBQWdESUNCQUFBS0NOQUFBQ0FNZ0lFQUFBb0kwQUFBSUF5QWdR
QUFDZ2pRQUFBZ0RJQ0JBQUEKS0NOQUFBQ0FNZ0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pRQUFBZ0RJ
Q0JBQUFLQ05BQUFDQU1nSUVBQUFvSTBBQUFJQXlBZ1FBQUNnagpRQUFBZ0RJQ0JBQUFLTk03ZCs3
YzdxYzlFUUFBd0I4R240QUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJR
ClJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdB
QUZCR2dBQUFBR1VFQ0FBQVVFYUEKQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VF
Q0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQQpBR1VFQ0FBQVVFYUFBQUFB
WlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFB
QUJsCkJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdn
QUFBQUdVRUNBQUFVRWFBQUFBQVpRUUkKQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFV
RWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQQpVRWFBQUFBQVpRUUlB
QUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJB
Z0FBRkJHCmdBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFH
VUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUEKQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFB
QUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQQpaUVFJQUFCUVJv
QUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZC
R2dBQUFBR1VFCkNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FB
QVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0EKQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFR
SUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUQpSb0FBQUFC
bEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFB
QUdVRUNBQUFVRWFBCkFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFB
QUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUEKQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJR
Um9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbApCQWdB
QUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVD
QUFBVUVhQUFBQUFaUVFJCkFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFa
UVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUEKVUVhQUFBQUFaUVFJQUFCUVJvQUFB
QUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCRwpn
QUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVF
YUFBQUFBWlFRSUFBQlFSb0FBCkFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFB
QlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUEKWlFRSUFBQlFSb0FBQUFCbEJB
Z0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdV
RQpDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFB
QVpRUUlBQUJRUm9BQUFBQmxCQWdBCkFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9B
QUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlEKUm9BQUFBQmxCQWdBQUZC
R2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFB
VUVhQQpBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJ
QUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBCkFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJs
QkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmwKQkFnQUFGQkdnQUFB
QUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFB
QUFBWlFRSQpBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFS
b0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBClVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FB
RkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkcKZ0FBQUFHVUVD
QUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpR
UUlBQUJRUm9BQQpBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFB
QmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBClpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dB
QUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUUKQ0FBQVVF
YUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFC
UVJvQUFBQUJsQkFnQQpBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFn
QUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRClJvQUFBQUJsQkFnQUFGQkdnQUFBQUdV
RUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUEKQUFB
QVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FB
QUFCbEJBZ0FBRkJHZ0FBQQpBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkRt
L3dQUHoxQXpGWDBuMmdBQUFBQkpSVTVFcmtKZ2dnPT0KCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLnBuZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpz
dm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlv
bi1jbGlwLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFK
WUNBWUFBQUNhZG9Kd0FBQU1ta2xFUVZSNG5PM2RJUTdDUUJCQVVRb05WMXdjCmtqTWhjWnlSaEpR
YnRLaFBnUGZzamhqN00yS25NY2F5QXdBQUNPdy92UUFBQVBBL0JBZ0FBSkFSSUFBQVFFYUFBQUFB
R1FFQ0FBQmsKQkFnQUFKQVJJQUFBUUdiZUdyamU3c1VlQUFEQUQ3aWNUNnZ2TGlBQUFFQkdnQUFB
QUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQQpBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFB
QUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBCkFFQkdnQUFB
QUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFB
QmtCQWdBQVpBUUkKQUFDUUVTQUFBRUJtR21Nc2F3T1BaN1VLQUFEdzdZNkg5WGNYRUFBQUlDTkFB
QUNBakFBQkFBQXlBZ1FBQU1nSUVBQUFJQ05BQUFDQQpqQUFCQUFBeUFnUUFBTWdJRUFBQUlETnZE
V3o5WkFnQUFQQXVGeEFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBCmdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUEKQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRQpBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
Ck1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUEKZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQQpBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFCkFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0EKQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBagpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJCkNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUEKTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQQpnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBCkFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUUKQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QQpBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqClFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBREkKQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQQpNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBCmdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUEKQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRQpB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SQpDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBCk1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUEKZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQQpBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFCkFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0EKQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBagpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJCkNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUEKTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQQpnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBCkFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUUKQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QQpBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqClFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBREkKQ0JB
QUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFB
QUNBalFBQUFnSXdBQVFBQQpNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFB
QUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBCmdJd0FBUUFBTWdJRUFBRElDQkFB
QUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUEK
QUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFB
Q0FqUUFBQWdJd0FBUUFBTWdJRQpBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFB
Q0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFB
Q0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFD
QWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFD
QWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFD
QWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBCk1nSUVBQURJQ0JBQUFD
QWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNB
alFBQUEKZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNB
alFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQQpBQ0FqUUFBQWdJd0FBUUFBTWkrWCt3M0VhaWRxZUFB
QUFBQkpSVTVFcmtKZ2dnPT0KCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50ZXJt
ZWRpYXRlLWxheW91dC1wb3NpdGlvbi1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlz
cGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllDQVlB
QUFDYWRvSndBQUFNMkVsRVFWUjRuTzNac1cwQ1FSUkZVZHVNNk1VUgp6U0JCUUxJZDBBRU4wUXdS
clNCTGxwMFRlQk4wVi9LZWs4NFBYbm8xNzRmRDRlY05BQUFnOExIMEFBQUFZRDBFQ0FBQWtCRWdB
QUJBClJvQUFBQUFaQVFJQUFHUUVDQUFBa0JFZ0FBQkFac3dkZkgwWE13QUFnUDlndS9uNzNROElB
QUNRRVNBQUFFQkdnQUFBQUJrQkFnQUEKWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlB
QUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQQpBQmtCQWdBQVpBUUlB
QUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFB
Q1FFU0FBCkFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFB
Q1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUkKQUFDUUVTQUFBRUJHZ0FBQUFKa3hkN0M3ZmhZN1h1
NjJ2eTg5QVFBQWVPSUhCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQQp5QWdRQUFBZ0kw
QUFBSUNNQUFFQUFESUNCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBB
QUFJQ01BQUVBCkFESUNCQUFBeUFnUUFBQWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBB
QUFJQ01BQUVBQURJQ0JBQUF5SXk1Zy9QalV1eDQKdWVsMFhIb0NBQUR3eEE4SUFBQ1FFU0FBQUVC
R2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUQpFU0FBQUVC
R2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJH
Z0FBQUFKa3hkekNkCmpzVU9BQUJnQmZ5QUFBQUFHUUVDQUFCa0JBZ0FBSkFSSUFBQVFFYUFBQUFB
R1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFBQUFBQUdRRUMKQUFCa0JBZ0FBSkFSSUFBQVFFYUFBQUFB
R1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFBQUFBQUdRRUNBQUJrQkFnQUFKQVJJQUFBUUVhQQpBQUFB
R1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFBQUFBQUdRRUNBQUJrQkFnQUFKQVJJQUFBUUVhQUFBQUFH
UUVDQUFCa0JBZ0FBSkFSCklBQUFRRWFBQUFBQUdRRUNBQUJrQkFnQUFKQVJJQUFBUUVhQUFBQUFH
UUVDQUFCa0JBZ0FBSkFSSUFBQVFFYUFBQUFBR1FFQ0FBQmsKQkFnQUFKQVJJQUFBUUVhQUFBQUFH
UUVDQUFCa0JBZ0FBSkFSSUFBQVFFYUFBQUFBR1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFBQUFBQQpt
VEYzc0x0K0ZqdGU3cmEvTHowQkFBQjQ0Z2NFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnTXlZT3pnL0xzV09sNXRPeDZVbkFBQUFUL3lBQUFBQUdRRUNBQUJrQkFn
QQpBSkFSSUFBQVFFYUFBQUFBR1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFBQUFBQUdRRUNBQUJrQkFn
QUFKQVJJQUFBUUVhQUFBQUFHUUVDCkFBQmtCQWdBQUpBUklBQUFRRWFBQUFBQUdRRUNBQUJrQkFn
QUFKQVpjd2ZUNlZqc0FBQUFWc0FQQ0FBQWtCRWdBQUJBUm9BQUFBQVoKQVFJQUFHUUVDQUFBa0JF
Z0FBQkFSb0FBQUFBWkFRSUFBR1FFQ0FBQWtCRWdBQUJBUm9BQUFBQVpBUUlBQUdRRUNBQUFrQkVn
QUFCQQpSb0FBQUFDWk1YZXczUlF6QUFDQU5mQURBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtC
QWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBCkFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtC
QWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUEKQUVCR2dBQUFBQmtC
QWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JB
Z0FBWkFRSQpBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JB
Z0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCCkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JB
Z0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkcKZ0FBQUFCa0JB
Z0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFn
QUFaQVFJQUFDUQpFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFn
QUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBClpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFn
QUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUEKQUJrQkFn
QUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdB
QVpBUUlBQUNRRVNBQQpBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdB
QVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJCkFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdB
QVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0IKQWdB
QVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FB
WkFRSUFBQ1FFU0FBQUVCRwpnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FB
WkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRCkVTQUFBRUJHZ0FBQUFCa0JBZ0FB
WkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUEK
WkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQQpBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBCkFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpB
UUkKQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpB
UUlBQUNRRVNBQUFFQkdnQUFBQUJrQgpBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpB
UUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHCmdBQUFBQmtCQWdBQVpB
UUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFR
SUFBQ1EKRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFR
SUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQQpaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFR
SUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBCkFCa0JBZ0FBWkFR
SUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJ
QUFDUUVTQUEKQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJ
QUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSQpBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJ
QUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCCkFnQUFaQVFJ
QUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlB
QUNRRVNBQUFFQkcKZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlB
QUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUQpFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlB
QUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBClpBUUlB
QUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFB
Q1FFU0FBQUVCR2dBQUEKQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFB
Q1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQQpBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFB
Q1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJCkFB
Q1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFD
UUVTQUFBRUJHZ0FBQUFCa0IKQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFD
UUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCRwpnQUFBQUJrQkFnQUFaQVFJQUFD
UUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNR
CkVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNR
RVNBQUFFQkdnQUFBQUJrQkFnQUEKWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNR
RVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQQpBQmtCQWdBQVpBUUlBQUNR
RVNBQUFFRG1GN0hYRnUvRDBubW5BQUFBQUVsRlRrU3VRbUNDCgo=
</data>
<flag name="review"
          id="5803"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14265</attachid>
            <date>2007-04-29 06:47:40 -0700</date>
            <delta_ts>2007-04-29 07:34:30 -0700</delta_ts>
            <desc>Keep track of absolute translation and clip during layout</desc>
            <filename>repaintRectOptimization_r1.3.patch</filename>
            <type>text/plain</type>
            <size>105578</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIxMTY4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMDQtMjggIE1pdHogUGV0dGVsICA8bWl0
ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gdGVzdCBhbmQgdXBkYXRlZCByZXN1bHRzIGZvciBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4NworICAgICAgICAgIEltcGxlbWVudCBPKDEpIGFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdCBhbmQgYWJzb2x1dGVPdXRsaW5lQm94IGR1cmluZyBsYXlv
dXQgZm9yIGEgcG9zc2libGUgc3BlZWQgZ2FpbgorCisgICAgICAgICogZmFzdC9yZXBhaW50L2J1
Z3ppbGxhLTM1MDktZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAgICogZmFzdC9yZXBhaW50L2J1
Z3ppbGxhLTM1MDktZXhwZWN0ZWQucG5nOgorICAgICAgICAqIGZhc3QvcmVwYWludC9pbnRlcm1l
ZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvcmVwYWludC9pbnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhw
ZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxh
eW91dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1leHBlY3Rl
ZC5jaGVja3N1bToKKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1w
b3NpdGlvbi1leHBlY3RlZC5wbmc6CisKIDIwMDctMDQtMjggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9yZXBhaW50L2J1Z3ppbGxhLTM1MDktZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2J1Z3ppbGxhLTM1MDktZXhwZWN0ZWQuY2hl
Y2tzdW0JKHJldmlzaW9uIDIxMTgyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2J1Z3pp
bGxhLTM1MDktZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTJh
ZjdjZDk4M2Q2N2ZlNTZjNzljOGE5NjhiZGFhNzVkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorNWJkNzczMTZjNjMzNmJkM2RjNTM4MjgwNmY1ZTVhMzYKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91
dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvcmVwYWludC9pbnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhwZWN0
ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50
ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACis0Y2MzOWRiOWUwYWNmMWE2NmJkYjZhNmI3Y2MwYjBiNQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9p
bnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9pbnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9u
LWNsaXAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBh
aW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKK2xheWVyIGF0ICg4LDgpIHNpemUg
Nzg0eDQwIHNjcm9sbFkgNjAgc2Nyb2xsSGVpZ2h0IDIwMAorICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDc4NHg0MAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUg
Nzg0eDIwMCBbYmdjb2xvcj0jRjBGOEZGXQorICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7
RElWfSBhdCAoNzQ0LDApIHNpemUgNDB4NDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDQwKSBzaXplIDc4NHgzMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDQweDIwIFtiZ2NvbG9yPSNGRjAwMDBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
aW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1jbGlwLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0
ZS1sYXlvdXQtcG9zaXRpb24tY2xpcC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBA
Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT48L3RpdGxlPgorICAgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAgICAgIC5mbG9hdCB7IGZsb2F0OiByaWdodDsgaGVpZ2h0OiA0MHB4OyB3
aWR0aDogNDBweDsgfQorICAgICAgICAudGVzdCB7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGFsaWNlYmx1ZSB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0icmVwYWlu
dC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLnN0eWxl
LmhlaWdodD0nMjBweCc7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiIHN0eWxl
PSJvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDQwcHgiPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0
ZXN0Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsb2F0Ij48L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgc3R5bGU9ImNsZWFyOiByaWdodDsgcGFkZGluZy1ib3R0b206IDEwcHg7Ij4KKyAgICAg
ICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IiBpZD0idGFyZ2V0Ij4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c2NyaXB0
PnNjcm9sbGVyLnNjcm9sbFRvcCA9IDYwOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24t
ZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50
L2ludGVybWVkaWF0ZS1sYXlvdXQtcG9zaXRpb24tZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9u
IDIxMTgyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2ludGVybWVkaWF0ZS1sYXlvdXQt
cG9zaXRpb24tZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTFl
Mjk3MDkxY2FhZTZkYzliMGJiODg3YTU5MDAyMWE2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorZmYyYWI4Y2E4NzgyNmM5Mzk3NzViYTQ0N2YzYTZkODQKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjExNjgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyMiBAQAorMjAwNy0wNC0yOCAgTWl0eiBQZXR0ZWwgIDxtaXR6QHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4NworICAgICAg
ICAgIEltcGxlbWVudCBPKDEpIGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCBhbmQgYWJzb2x1
dGVPdXRsaW5lQm94IGR1cmluZyBsYXlvdXQgZm9yIGEgcG9zc2libGUgc3BlZWQgZ2FpbgorCisg
ICAgICAgIFRlc3QgZm9yIGEgYnVnIGZpeGVkIGJ5IHRoaXMgcGF0Y2g6IGZhc3QvcmVwYWludC9p
bnRlcm1lZGlhdGUtbGF5b3V0LXBvc2l0aW9uLWNsaXAuaHRtbAorCisgICAgICAgIEJ5IGtlZXBp
bmcgdHJhY2sgb2YgdGhlIHRvdGFsIHRyYW5zbGF0aW9uIGFuZCBjbGlwIGR1cmluZyBsYXlvdXQs
IGFic29sdXRlUG9zaXRpb24gYW5kCisgICAgICAgIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0
IGJlY29tZSBPKDEpLgorCisgICAgICAgICogV2ViQ29yZS5wcm86IEFkZGVkIExheW91dFN0YXRl
LmNwcAorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2o6IEFk
ZGVkIExheW91dFN0YXRlLntjcHAsaH0KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZGVkIExheW91dFN0YXRlLntjcHAsaH0KKyAgICAgICAgKiBXZWJDb3Jl
U291cmNlcy5ia2w6IEFkZGVkIExheW91dFN0YXRlLmNwcAorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KTogV2hlbiBkb2lu
ZyBzdWJ0cmVlIGxheW91dCwgcHVzaCBhbiBpbml0aWFsIGxheW91dCBzdGF0ZSBmb3IgdGhlCisg
ICAgICAgIGxheW91dCByb290LgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHA6
IEFkZGVkLiBBIExheW91dFN0YXRlIGNvcnJlc3BvbmRpbmcgdG8gYSBib3ggY29uc2lzdHMgb2Yg
dGhlIG9yaWdpbiBvZgorICAgICAgICBpdHMgY29vcmRpbmF0ZSBzeXN0ZW0gaW4gdmlldyBjb29y
ZGluYXRlcyBhbmQgcG9zc2libHkgdGhlIGNsaXAgcmVjdCwgaW4gdmlldyBjb29yZGluYXRlcywg
d2hpY2gKKyAgICAgICAgYXBwbGllcyB0byBpdHMgY2hpbGRyZW4uCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3Rh
dGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0U3RhdGU6Om9wZXJhdG9yIGRlbGV0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xh
eW91dFN0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6OkxheW91
dFN0YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKTogRmFjdG9yZWQgb3V0IHRoZSAib25s
eSBwb3NpdGlvbmVkIG9iamVjdHMiIGNhc2UgaW50bworICAgICAgICBsYXlvdXRPbmx5UG9zaXRp
b25lZE9iamVjdHMoKS4gQWRkZWQgY29kZSB0byBwdXNoL3BvcCBMYXlvdXRTdGF0ZSwgdW5sZXNz
IHdlIGhhdmUgY29sdW1ucywgaW4KKyAgICAgICAgd2hpY2ggY2FzZSB3ZSBkaXNhYmxlL2VuYWJs
ZSBMYXlvdXRTdGF0ZS4gUmVtb3ZlZCB0aGUgdHJhbnNsYXRpb24gYnkgdGhlIGxheW91dCBkZWx0
YQorICAgICAgICBvZiB0aGUgb2xkIGFic29sdXRlIHJlY3RzLCBzaW5jZSB0aGF0IGlzIG5vdyBp
bnRlZ3JhbCB0byBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBhbmQKKyAgICAgICAgYWJz
b2x1dGVPdXRsaW5lQm94KCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0
T25seVBvc2l0aW9uZWRPYmplY3RzKTogQWRkZWQgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdGhhdCBj
aGVja3MgZm9yCisgICAgICAgIGFuZCBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIG9ubHkgcG9zaXRp
b25lZCBvYmplY3RzIG5lZWQgbGF5b3V0LiBSZXR1cm5zIHRydWUgaW4gdGhhdCBjYXNlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2F0cyk6IERp
c2FibGVkIExheW91dFN0YXRlIHdoZW4gcmVwYWludGluZyBmbG9hdHMsIHNpbmNlCisgICAgICAg
IHRoZXkgbWF5IGJlbG9uZyB0byBvdGhlciBjb250YWluZXJzLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyKTogRGlzYWJsZWQgTGF5b3V0U3RhdGUgd2hl
biBhZGRpbmcgYW5kIHJlbW92aW5nIGZyb20gdGhlCisgICAgICAgIGZpcnN0IGxldHRlciBjb250
YWluZXIsIHNpbmNlIGl0IG1heSBiZSBkaWZmZXJlbnQgdGhhbiBvdXJzZWx2ZXMuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldFN0eWxlKTogTWlub3IgY2xl
YW51cDogY2hhbmdlZCBlbGVtZW50KCktPmRvY3VtZW50KCkgdG8gdGhlIGVxdWl2YWxlbnQgZG9j
dW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b2Zmc2V0Rm9yUG9zaXRpb25l
ZEluQ29udGFpbmVyKTogQWRkZWQuIEZhY3RvcmVkIG91dCBjb21tb24gY29kZSBmcm9tCisgICAg
ICAgIGFic29sdXRlUG9zaXRpb24sIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0IGFuZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbiBpbnRvIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24pOiBBZGRlZCBhbiBPKDEpIGNv
ZGUgcGF0aCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZworICAgICAgICBsYXlv
dXQgKGFuZCBMYXlvdXRTdGF0ZSBoYXMgbm90IGJlZW4gZGlzYWJsZWQpLiBGYWN0b3JlZCBvdXQg
c29tZSBjb2RlIGludG8KKyAgICAgICAgb2Zmc2V0Rm9yUG9zaXRpb25lZEluQ29udGFpbmVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3Qp
OiBBZGRlZCB0aGUgbGF5b3V0IGRlbHRhIGhlcmUsIHNvIGNhbGxlcnMgZG9uJ3QgbmVlZAorICAg
ICAgICB0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUFic29sdXRlUmVw
YWludFJlY3QpOiBBZGRlZCBhbiBPKDEpIGNvZGUgcGF0aCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkCisgICAgICAgIGR1cmluZyBsYXlvdXQgKGFuZCBMYXlvdXRTdGF0ZSBoYXMgbm90IGJl
ZW4gZGlzYWJsZWQpLiBGYWN0b3JlZCBvdXQgc29tZSBjb2RlIGludG8KKyAgICAgICAgb2Zmc2V0
Rm9yUG9zaXRpb25lZEluQ29udGFpbmVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjpsYXlvdXQpOiBB
ZGRlZCBMYXlvdXRTdGF0ZSBwdXNoL3BvcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91
dEJsb2NrKTogRmFjdG9yZWQgb3V0IHRoZSAib25seSBwb3NpdGlvbmVkIG9iamVjdHMiIGNhc2Ug
aW50bworICAgICAgICBsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMoKS4gQWRkZWQgTGF5b3V0
U3RhdGUgcHVzaC9wb3AuIFJlbW92ZWQgdGhlIHRyYW5zbGF0aW9uIGJ5IHRoZSBsYXlvdXQgZGVs
dGEKKyAgICAgICAgb2YgdGhlIG9sZCBhYnNvbHV0ZSByZWN0cywgc2luY2UgdGhhdCBpcyBub3cg
aW50ZWdyYWwgdG8gYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgYW5kCisgICAgICAgIGFi
c29sdXRlT3V0bGluZUJveCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3c6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVj
dCk6IEFkZGVkIGFuIEFTU0VSVC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGb3JlaWduT2JqZWN0OjpsYXlvdXQp
OiBEaXNhYmxlZCBMYXlvdXRTdGF0ZSBiZWNhdXNlIGl0IGlzIGluY29tcGF0aWJsZSB3aXRoIGFy
Yml0cmFyeQorICAgICAgICBhZmZpbmUgdHJhbnNmb3Jtcy4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySFRNTENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFz
OjpsYXlvdXQpOiBSZW1vdmVkIHRoZSB0cmFuc2xhdGlvbiBieSB0aGUgbGF5b3V0IGRlbHRhIG9m
IHRoZSBvbGQgYWJzb2x1dGUKKyAgICAgICAgcmVjdHMsIHNpbmNlIHRoYXQgaXMgbm93IGludGVn
cmFsIHRvIGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGFuZCBhYnNvbHV0ZU91dGxpbmVC
b3goKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OmxheW91dCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5
ZXJQb3NpdGlvbnMpOiBBZGRlZCBBU1NFUlRzLiBGYWN0b3JlZCBvdXQgc29tZSBjb2RlIGludG8K
KyAgICAgICAgUmVuZGVyQm94OjpvZmZzZXRGb3JQb3NpdGlvbmVkSW5Db250YWluZXIuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KTog
RGlzYWJsZWQgTGF5b3V0U3RhdGUgYXJvdW5kIHRoZSBjYWxsIHRvCisgICAgICAgIHNjcm9sbFRv
T2Zmc2V0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6dXBkYXRlTWFya2VyTG9jYXRpb24pOiBEaXNhYmxl
ZCBMYXlvdXRTdGF0ZSB3aGVuIG1vdmluZyB0aGUgbGlzdCBtYXJrZXIsIHNpbmNlCisgICAgICAg
IGl0IGNhbiB0cmlnZ2VyIHJlcGFpbnRpbmcgaW4gb3RoZXIgY29udGFpbmVycy4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6aXNSb290KTogTWlub3IgY2xlYW51cDogY2hhbmdlZCBlbGVtZW50KCktPmRvY3VtZW50
KCkgdG8gdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgZG9jdW1lbnQoKS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QpOiBSZW1vdmVkICdy
ZXR1cm4nIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojpjb250YWluZXIpOiBSZW9yZGVyZWQgdG8gYXZvaWQgY2FsbGluZyBpc1RleHQo
KSB0d2ljZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVPdXRsaW5l
Qm94KTogQWRkZWQgdGhlIGxheW91dCBkZWx0YSBoZXJlLCBzbyBjYWxsZXJzIGRvbid0IG5lZWQg
dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6IERpc2FibGVkIExheW91dFN0
YXRlIGJlY2F1c2UgaXQgaXMgaW5jb21wYXRpYmxlIHdpdGggYXJiaXRyYXJ5CisgICAgICAgIGFm
ZmluZSB0cmFuc2Zvcm1zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KTogIEZhY3RvcmVkIG91dCB0aGUg
Im9ubHkgcG9zaXRpb25lZCBvYmplY3RzIiBjYXNlIGludG8KKyAgICAgICAgbGF5b3V0T25seVBv
c2l0aW9uZWRPYmplY3RzKCkuIEFkZGVkIExheW91dFN0YXRlIHB1c2gvcG9wLiBSZW1vdmVkIHRo
ZSB0cmFuc2xhdGlvbiBieSB0aGUgbGF5b3V0IGRlbHRhCisgICAgICAgIG9mIHRoZSBvbGQgYWJz
b2x1dGUgcmVjdHMsIHNpbmNlIHRoYXQgaXMgbm93IGludGVncmFsIHRvIGFic29sdXRlQ2xpcHBl
ZE92ZXJmbG93UmVjdCgpIGFuZAorICAgICAgICBhYnNvbHV0ZU91dGxpbmVCb3goKS4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KTogQWRkZWQgdGhlIGxh
eW91dCBkZWx0YSBoZXJlLCBzbyBjYWxsZXJzCisgICAgICAgIGRvbid0IG5lZWQgdG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0
KTogRm9yIHRoZSBPKDEpIGNvZGUgcGF0aCwgc2tpcHBlZCB0aGUgY29ycmVjdGlvbgorICAgICAg
ICBmb3IgdGhlIHBhcmVudCByb3csIGJlY2F1c2UgUmVuZGVyVGFibGVSb3cgZG9lc24ndCBwdXNo
IGEgdHJhbnNsYXRpb24gaW50byBMYXlvdXRTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6YWJzb2x1dGVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6
bGF5b3V0KTogQWRkZWQgTGF5b3V0U3RhdGUgcHVzaC9wb3AuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNl
Y3Rpb246OnNldENlbGxXaWR0aHMpOiBBZGRlZCBMYXlvdXRTdGF0ZSBwdXNoL3BvcCBpZiBjZWxs
cyBhcmUgcmVwYWludGVkIG9yCisgICAgICAgIHJlY2VpdmUgbGF5b3V0LgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93SGVpZ2h0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MpOiBBZGRlZCBMYXlvdXRT
dGF0ZSBwdXNoL3BvcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OmxheW91dCk6IEFkZGVkIGluaXRpYWwgTGF5b3V0U3RhdGUgc2V0dXAgZm9y
IHRoZSBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludEJveERlY29y
YXRpb25zKTogTWlub3IgY2xlYW51cDogY2hhbmdlZCBlbGVtZW50KCktPmRvY3VtZW50KCkgdG8g
dGhlCisgICAgICAgIGVxdWl2YWxlbnQgZG9jdW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3OjpwdXNoTGF5b3V0U3RhdGUpOiBBZGRlZC4gUHVzaGVzIGluaXRpYWwgbGF5
b3V0IHN0YXRlIGZvciBzdWJ0cmVlIGxheW91dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cHVzaExheW91dFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBvcExheW91dFN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OmRpc2FibGVMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjplbmFibGVMYXlvdXRTdGF0ZSk6CisKIDIwMDctMDQtMjggIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguICBDaGFuZ2UgdXNlIG9mIG5pbCB0byAw
IGluIEMrKyBzb3VyY2UgZmlsZS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMjExODIpCisrKyBXZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNiArNjQ3LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcmVuZGVyaW5nL0lubGluZUJveC5jcHAgXAogICAgIHJlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcCBcCiAgICAgcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIFwKKyAgICByZW5kZXJp
bmcvTGF5b3V0U3RhdGUuY3BwIFwKICAgICByZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHAgXAog
ICAgIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQXJl
bmEuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAyMTE4MikKKysrIFdlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDcgQEAKICAg
ICAgICAgcmVuZGVyaW5nL0lubGluZUJveC5jcHAKICAgICAgICAgcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwCiAgICAgICAgIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorICAgICAgICBy
ZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCiAgICAgICAgIHJlbmRlcmluZy9MaXN0TWFya2VyQm94
LmNwcAogICAgICAgICByZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcAogICAgICAgICByZW5kZXJp
bmcvUmVuZGVyQXJlbmEuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAyMTE4MikKKysrIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM3MSw2ICsz
MzcxLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHJlbmRlcmluZ1xMYXlvdXRTdGF0ZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJlbmRlcmluZ1xMYXlvdXRTdGF0ZS5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxyZW5k
ZXJpbmdcTGVuZ3RoLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMTgyKQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2
ICsyNzEsOCBAQAogCQkxQ0ZDRUVGQTBBQUNDN0E3MDAzNDg3NTAgLyogRE9NSFRNTElucHV0RWxl
bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkNFRUY5MEFBQ0M3OTAwMDM0ODc1MCAvKiBET01IVE1MSW5w
dXRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwogCQkzNzkxOUMyMzBCN0QxODg2MDBBNTY5OTggLyog
UG9zaXRpb25JdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzkxOUMyMTBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5j
cHAgKi87IH07CiAJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkxOUMy
MjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKCk7IH07IH07CisJCTJEOTA2NjA2MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlv
dXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovOyB9OworCQky
RDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAv
KiBMYXlvdXRTdGF0ZS5oICovOyB9OwogCQk0NDhBMjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0OEEyOUJEMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5oICovOyB9OwogCQk0NDhBMjlDMDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQ4QTI5QkUwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKIAkJNDQ4QUQyN0MwQTQ4MTM3QTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CkBAIC0zMzgyLDYgKzMzODQsOCBAQAogCQkyRDkwNjYw
QzA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2xpcGJvYXJkTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
Mzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9z
aXRpb25JdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRp
b25JdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDkwNjYwNDBCRTE0
MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExheW91dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NDhBMjlCRDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OEEyOUJFMEE0NkQ5
Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTQ2Niw2ICs5NDcwLDggQEAKIAkJCQlBOENGRjVEQjBBMTU1
QTA1MDAwQTQyMzQgLyogSW5saW5lUnVuQm94LmggKi8sCiAJCQkJQkNFQTQ4MUEwOTdEOTMwMjAw
OTRDOUU0IC8qIElubGluZVRleHRCb3guY3BwICovLAogCQkJCUJDRUE0ODFCMDk3RDkzMDIwMDk0
QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggKi8sCisJCQkJMkQ5MDY2MDQwQkUxNDFENDAwOTU2OTk4
IC8qIExheW91dFN0YXRlLmNwcCAqLywKKwkJCQkyRDkwNjYwNTBCRTE0MUQ0MDA5NTY5OTggLyog
TGF5b3V0U3RhdGUuaCAqLywKIAkJCQk5MzVDNDc2MDA5QUM0Q0QxMDBBNkFBQjQgLyogTGVuZ3Ro
LmggKi8sCiAJCQkJQThFQTdBNEQwQTE5MUE1MjAwQThFRjVGIC8qIExpc3RNYXJrZXJCb3guY3Bw
ICovLAogCQkJCUE4RUE3QTQ5MEExOTFBNTIwMEE4RUY1RiAvKiBMaXN0TWFya2VyQm94LmggKi8s
CkBAIC0xMTI0MCw2ICsxMTI0Niw3IEBACiAJCQkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8q
IEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNkZDNDQyRTBCQUU1QTlFMDA5
MEVERTEgLyogSmF2YVNjcmlwdFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUMy
OUEwMEJCMDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xMjYwOSw2ICsxMjYxNiw3IEBACiAJCQkJMDZGQzQ0MkQwQkFFNUE5RTAwOTBFREUxIC8q
IEphdmFTY3JpcHRTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUMyOTlGMEJC
MDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFB
QTNGNkYwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIxMTgyKQorKysgV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw3ICs0MDksMTIgQEAg
dm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogICAgICAgICBsYXllci0+
Y2hlY2tGb3JSZXBhaW50T25SZXNpemUoKTsKIAogICAgIHBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7
CisKKyAgICBpZiAoc3VidHJlZSkKKyAgICAgICAgcm9vdC0+dmlldygpLT5wdXNoTGF5b3V0U3Rh
dGUocm9vdCk7CiAgICAgcm9vdC0+bGF5b3V0KCk7CisgICAgaWYgKHN1YnRyZWUpCisgICAgICAg
IHJvb3QtPnZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKICAgICBkLT5sYXlvdXRSb290ID0gMDsK
IAogICAgIG1fZnJhbWUtPmludmFsaWRhdGVTZWxlY3Rpb24oKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL0xheW91dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRTdGF0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRT
dGF0ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTGF5b3V0U3RhdGUuaCIKKworI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKExheW91dFN0YXRlKiBwcmV2LCBS
ZW5kZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgQVNTRVJU
KHByZXYpOworCisgICAgbV9uZXh0ID0gcHJldjsKKworICAgIGJvb2wgZml4ZWQgPSByZW5kZXJl
ci0+aXNQb3NpdGlvbmVkKCkgJiYgcmVuZGVyZXItPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4
ZWRQb3NpdGlvbjsKKyAgICBpZiAoZml4ZWQpIHsKKyAgICAgICAgaW50IGZpeGVkWCA9IDA7Cisg
ICAgICAgIGludCBmaXhlZFkgPSAwOworICAgICAgICByZW5kZXJlci0+dmlldygpLT5hYnNvbHV0
ZVBvc2l0aW9uKGZpeGVkWCwgZml4ZWRZLCB0cnVlKTsKKyAgICAgICAgbV9vZmZzZXQgPSBJbnRT
aXplKGZpeGVkWCwgZml4ZWRZKSArIG9mZnNldDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9vZmZz
ZXQgPSBwcmV2LT5tX29mZnNldCArIG9mZnNldDsKKworICAgIGlmIChyZW5kZXJlci0+aXNSZWxQ
b3NpdGlvbmVkKCkpIHsKKyAgICAgICAgaW50IHJlbFggPSAwOworICAgICAgICBpbnQgcmVsWSA9
IDA7CisgICAgICAgIHJlbmRlcmVyLT5sYXllcigpLT5yZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KHJl
bFgsIHJlbFkpOworICAgICAgICBtX29mZnNldCArPSBJbnRTaXplKHJlbFgsIHJlbFkpOworICAg
IH0gZWxzZSBpZiAocmVuZGVyZXItPmlzUG9zaXRpb25lZCgpICYmICFmaXhlZCkgeworICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBjb250YWluZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCkpCisg
ICAgICAgICAgICBtX29mZnNldCArPSByZW5kZXJlci0+b2Zmc2V0Rm9yUG9zaXRpb25lZEluQ29u
dGFpbmVyKGNvbnRhaW5lcik7CisgICAgfQorCisgICAgbV9jbGlwcGVkID0gIWZpeGVkICYmIHBy
ZXYtPm1fY2xpcHBlZDsKKyAgICBpZiAobV9jbGlwcGVkKQorICAgICAgICBtX2NsaXBSZWN0ID0g
cHJldi0+bV9jbGlwUmVjdDsKKyAgICBpZiAocmVuZGVyZXItPmhhc092ZXJmbG93Q2xpcCgpKSB7
CisgICAgICAgIGludCB4ID0gbV9vZmZzZXQud2lkdGgoKTsKKyAgICAgICAgaW50IHkgPSBtX29m
ZnNldC5oZWlnaHQoKTsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyZXItPmxh
eWVyKCk7CisgICAgICAgIEludFJlY3QgY2xpcFJlY3QoeCwgeSwgbGF5ZXItPndpZHRoKCksIGxh
eWVyLT5oZWlnaHQoKSk7CisgICAgICAgIGlmIChtX2NsaXBwZWQpCisgICAgICAgICAgICBtX2Ns
aXBSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
bV9jbGlwUmVjdCA9IGNsaXBSZWN0OworICAgICAgICAgICAgbV9jbGlwcGVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBsYXllci0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeCwgeSk7CisgICAg
ICAgIG1fb2Zmc2V0ID0gSW50U2l6ZSh4LCB5KTsKKyAgICB9CisgICAgLy8gRklYTUU6IDxodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ0Mz4gQXBwbHkgY29udHJvbCBj
bGlwIGlmIHByZXNlbnQuCit9CisKK0xheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShSZW5kZXJPYmpl
Y3QqIHJvb3QpCit7CisgICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIgPSByb290LT5jb250YWlu
ZXIoKTsKKyAgICBtX2NsaXBwZWQgPSB0cnVlOworICAgIG1fY2xpcFJlY3QgPSBjb250YWluZXIt
PmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOworICAgIGludCB4ID0gMDsKKyAgICBpbnQg
eSA9IDA7CisgICAgY29udGFpbmVyLT5hYnNvbHV0ZVBvc2l0aW9uKHgsIHkpOworICAgIG1fb2Zm
c2V0ID0gSW50U2l6ZSh4LCB5KTsKKyAgICBtX25leHQgPSAwOworfQorCisjaWZuZGVmIE5ERUJV
Rworc3RhdGljIGJvb2wgaW5MYXlvdXRTdGF0ZURlc3Ryb3k7CisjZW5kaWYKKwordm9pZCBMYXlv
dXRTdGF0ZTo6ZGVzdHJveShSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEpCit7CisjaWZuZGVmIE5E
RUJVRworICAgIGluTGF5b3V0U3RhdGVEZXN0cm95ID0gdHJ1ZTsKKyNlbmRpZgorICAgIGRlbGV0
ZSB0aGlzOworI2lmbmRlZiBOREVCVUcKKyAgICBpbkxheW91dFN0YXRlRGVzdHJveSA9IGZhbHNl
OworI2VuZGlmCisgICAgcmVuZGVyQXJlbmEtPmZyZWUoKihzaXplX3QqKXRoaXMsIHRoaXMpOwor
fQorCit2b2lkKiBMYXlvdXRTdGF0ZTo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJl
bmEqIHJlbmRlckFyZW5hKSB0aHJvdygpCit7CisgICAgcmV0dXJuIHJlbmRlckFyZW5hLT5hbGxv
Y2F0ZShzeik7Cit9CisKK3ZvaWQgTGF5b3V0U3RhdGU6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
dHIsIHNpemVfdCBzeikKK3sKKyAgICBBU1NFUlQoaW5MYXlvdXRTdGF0ZURlc3Ryb3kpOworICAg
ICooc2l6ZV90KilwdHIgPSBzejsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9MYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
TGF5b3V0U3RhdGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMYXlvdXRTdGF0ZV9o
CisjZGVmaW5lIExheW91dFN0YXRlX2gKKworI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyQXJlbmE7CitjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBS
ZW5kZXJPYmplY3Q7CisKK2NsYXNzIExheW91dFN0YXRlIDogTm9uY29weWFibGUgeworcHVibGlj
OgorICAgIExheW91dFN0YXRlKCkKKyAgICAgICAgOiBtX2NsaXBwZWQoZmFsc2UpCisgICAgICAg
ICwgbV9uZXh0KDApCisgICAgeworICAgIH0KKworICAgIExheW91dFN0YXRlKExheW91dFN0YXRl
KiwgUmVuZGVyQm94KiwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKKyAgICBMYXlvdXRTdGF0ZShS
ZW5kZXJPYmplY3QqKTsKKworICAgIHZvaWQgZGVzdHJveShSZW5kZXJBcmVuYSopOworCisgICAg
Ly8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuCisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOworCisgICAgLy8gT3ZlcnJpZGRlbiB0byBwcmV2ZW50
IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgorICAgIHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqLCBzaXplX3QpOworCitwcml2YXRlOgorICAgIC8vIFRoZSBub3JtYWwgb3Bl
cmF0b3IgbmV3IGlzIGRpc2FsbG93ZWQuCisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkg
dGhyb3coKTsKKworcHVibGljOgorICAgIGJvb2wgbV9jbGlwcGVkOworICAgIEludFJlY3QgbV9j
bGlwUmVjdDsKKyAgICBJbnRTaXplIG1fb2Zmc2V0OworICAgIExheW91dFN0YXRlKiBtX25leHQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBMYXlvdXRTdGF0ZV9o
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMTE4MikKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg2LDI1
ICs0ODYsMjMgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheQogICAg
IGlmIChpc0lubGluZSgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpKSAvLyBJbmxp
bmUgPGZvcm0+cyBpbnNpZGUgdmFyaW91cyB0YWJsZSBlbGVtZW50cyBjYW4KICAgICAgICAgcmV0
dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2F1c2UgdXMgdG8g
Y29tZSBpbiBoZXJlLiAgSnVzdCBiYWlsLgogCi0gICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYm
IHBvc0NoaWxkTmVlZHNMYXlvdXQoKSAmJiAhbm9ybWFsQ2hpbGROZWVkc0xheW91dCgpICYmICFz
ZWxmTmVlZHNMYXlvdXQoKSkgewotICAgICAgICAvLyBBbGwgd2UgaGF2ZSB0byBpcyBsYXkgb3V0
IG91ciBwb3NpdGlvbmVkIG9iamVjdHMuCi0gICAgICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3Rz
KGZhbHNlKTsKLSAgICAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQotICAgICAgICAgICAgbV9s
YXllci0+dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7Ci0gICAgICAgIHNldE5lZWRzTGF5
b3V0KGZhbHNlKTsKKyAgICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4gJiYgbGF5b3V0T25seVBvc2l0
aW9uZWRPYmplY3RzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisKICAgICBJbnRS
ZWN0IG9sZEJvdW5kczsKICAgICBJbnRSZWN0IG9sZE91dGxpbmVCb3g7CiAgICAgYm9vbCBjaGVj
a0ZvclJlcGFpbnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKICAgICBpZiAoY2hl
Y2tGb3JSZXBhaW50KSB7CiAgICAgICAgIG9sZEJvdW5kcyA9IGFic29sdXRlQ2xpcHBlZE92ZXJm
bG93UmVjdCgpOwotICAgICAgICBvbGRCb3VuZHMubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkp
OwogICAgICAgICBvbGRPdXRsaW5lQm94ID0gYWJzb2x1dGVPdXRsaW5lQm94KCk7Ci0gICAgICAg
IG9sZE91dGxpbmVCb3gubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgIH0KIAorICAg
IGJvb2wgaGFkQ29sdW1ucyA9IG1faGFzQ29sdW1uczsKKyAgICBpZiAoIWhhZENvbHVtbnMpCisg
ICAgICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUoeFBvcygpLCB5UG9z
KCkpKTsKKyAgICBlbHNlCisgICAgICAgIHZpZXcoKS0+ZGlzYWJsZUxheW91dFN0YXRlKCk7CisK
ICAgICBpbnQgb2xkV2lkdGggPSBtX3dpZHRoOwogICAgIGludCBvbGRDb2x1bW5XaWR0aCA9IGRl
c2lyZWRDb2x1bW5XaWR0aCgpOwogCkBAIC02MDYsNiArNjA0LDExIEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXkKICAgICBtX292ZXJmbG93V2lkdGggPSBtYXgobV9v
dmVyZmxvd1dpZHRoLCBtX3dpZHRoKTsKICAgICBtX292ZXJmbG93SGVpZ2h0ID0gbWF4KG1fb3Zl
cmZsb3dIZWlnaHQsIG1faGVpZ2h0KTsKIAorICAgIGlmICghaGFkQ29sdW1ucykKKyAgICAgICAg
dmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOworICAgIGVsc2UKKyAgICAgICAgdmlldygpLT5lbmFi
bGVMYXlvdXRTdGF0ZSgpOworCiAgICAgLy8gVXBkYXRlIG91ciBzY3JvbGwgaW5mb3JtYXRpb24g
aWYgd2UncmUgb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuIG5vdyB0aGF0IHdlIGtub3cgaWYK
ICAgICAvLyB3ZSBvdmVyZmxvdyBvciBub3QuCiAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQpA
QCAtMTIzOCw2ICsxMjQxLDMwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGRy
ZW4oYm8KICAgICBoYW5kbGVCb3R0b21PZkJsb2NrKHRvcCwgYm90dG9tLCBtYXJnaW5JbmZvKTsK
IH0KIAorYm9vbCBSZW5kZXJCbG9jazo6bGF5b3V0T25seVBvc2l0aW9uZWRPYmplY3RzKCkKK3sK
KyAgICBpZiAoIXBvc0NoaWxkTmVlZHNMYXlvdXQoKSB8fCBub3JtYWxDaGlsZE5lZWRzTGF5b3V0
KCkgfHwgc2VsZk5lZWRzTGF5b3V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IEFsbCB3ZSBoYXZlIHRvIGlzIGxheSBvdXQgb3VyIHBvc2l0aW9uZWQgb2JqZWN0cy4KKyAgICBp
ZiAoIW1faGFzQ29sdW1ucykKKyAgICAgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywg
SW50U2l6ZSh4UG9zKCksIHlQb3MoKSkpOworICAgIGVsc2UKKyAgICAgICAgdmlldygpLT5kaXNh
YmxlTGF5b3V0U3RhdGUoKTsKKworICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGZhbHNlKTsK
KyAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCisgICAgICAgIG1fbGF5ZXItPnVwZGF0ZVNjcm9s
bEluZm9BZnRlckxheW91dCgpOworCisgICAgaWYgKCFtX2hhc0NvbHVtbnMpCisgICAgICAgIHZp
ZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHZpZXcoKS0+ZW5hYmxl
TGF5b3V0U3RhdGUoKTsKKworICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdHMoYm9v
bCByZWxheW91dENoaWxkcmVuKQogewogICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3RzKSB7CkBA
IC0xMjgyLDYgKzEzMDksMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5n
RmxvYQogICAgICAgICAKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHI7CiAgICAgICAgIERlcHJl
Y2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zsb2F0aW5nT2JqZWN0
cyk7CisKKyAgICAgICAgLy8gRklYTUU6IEF2b2lkIGRpc2FibGluZyBMYXlvdXRTdGF0ZS4gQXQg
dGhlIHZlcnkgbGVhc3QsIGRvbid0IGRpc2FibGUgaXQgZm9yIGZsb2F0cyBvcmlnaW5hdGluZwor
ICAgICAgICAvLyBpbiB0aGlzIGJsb2NrLiBCZXR0ZXIgeWV0IHdvdWxkIGJlIHRvIHB1c2ggZXh0
cmEgc3RhdGUgZm9yIHRoZSBjb250YWluZXJzIG9mIG90aGVyIGZsb2F0cy4KKyAgICAgICAgdmll
dygpLT5kaXNhYmxlTGF5b3V0U3RhdGUoKTsKICAgICAgICAgZm9yICggOyAociA9IGl0LmN1cnJl
bnQoKSk7ICsraXQpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcmVwYWludCB0aGUgb2JqZWN0IGlm
IGl0IGlzIG92ZXJoYW5naW5nLCBpcyBub3QgaW4gaXRzIG93biBsYXllciwgYW5kCiAgICAgICAg
ICAgICAvLyBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gcGFpbnQgKG5vUGFpbnQgaXNuJ3Qgc2V0
KS4gV2hlbiBwYWludEFsbERlc2NlbmRhbnRzIGlzIHRydWUsIHRoZSBsYXR0ZXIKQEAgLTEyOTEs
NiArMTMyMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2EKICAg
ICAgICAgICAgICAgICByLT5ub2RlLT5yZXBhaW50T3ZlcmhhbmdpbmdGbG9hdHMoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorICAgICAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7
CiAgICAgfQogfQogCkBAIC0zOTM4LDkgKzM5NzAsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBk
YXRlRmlyc3RMZXR0ZXIoKQogICAgIH0KIAogICAgIC8vIElmIHRoZSBjaGlsZCBkb2VzIG5vdCBh
bHJlYWR5IGhhdmUgc3R5bGUsIHdlIGNyZWF0ZSBpdCBoZXJlLgotICAgIGlmIChjdXJyQ2hpbGQt
PmlzVGV4dCgpICYmICFjdXJyQ2hpbGQtPmlzQlIoKSAmJiAKLSAgICAgICAgY3VyckNoaWxkLT5w
YXJlbnQoKS0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gUmVuZGVyU3R5bGU6OkZJUlNUX0xFVFRF
UikgewotICAgICAgICAKKyAgICBpZiAoY3VyckNoaWxkLT5pc1RleHQoKSAmJiAhY3VyckNoaWxk
LT5pc0JSKCkgJiYgY3VyckNoaWxkLT5wYXJlbnQoKS0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0g
UmVuZGVyU3R5bGU6OkZJUlNUX0xFVFRFUikgeworICAgICAgICAvLyBPdXIgbGF5b3V0IHN0YXRl
IGlzIG5vdCB2YWxpZCBmb3IgdGhlIHJlcGFpbnRzIHdlIGFyZSBnb2luZyB0byB0cmlnZ2VyIGJ5
CisgICAgICAgIC8vIGFkZGluZyBhbmQgcmVtb3ZpbmcgY2hpbGRyZW4gb2YgZmlyc3RMZXR0ZXJD
b250YWluZXIuCisgICAgICAgIHZpZXcoKS0+ZGlzYWJsZUxheW91dFN0YXRlKCk7CisKICAgICAg
ICAgUmVuZGVyVGV4dCogdGV4dE9iaiA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihjdXJyQ2hp
bGQpOwogICAgICAgICAKICAgICAgICAgLy8gQ3JlYXRlIG91ciBwc2V1ZG8gc3R5bGUgbm93IHRo
YXQgd2UgaGF2ZSBvdXIgZmlyc3RMZXR0ZXJDb250YWluZXIgZGV0ZXJtaW5lZC4KQEAgLTM5OTQs
NiArNDAyOCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyKCkKIAogICAg
ICAgICAgICAgdGV4dE9iai0+ZGVzdHJveSgpOwogICAgICAgICB9CisgICAgICAgIHZpZXcoKS0+
ZW5hYmxlTGF5b3V0U3RhdGUoKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAkocmV2aXNpb24gMjExODIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNiArMjk0LDcgQEAgcHJpdmF0ZToKIHByb3RlY3RlZDoK
ICAgICB2b2lkIG5ld0xpbmUoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlmRW1wdHkoKSBj
b25zdDsKKyAgICBib29sIGxheW91dE9ubHlQb3NpdGlvbmVkT2JqZWN0cygpOwogCiBwcml2YXRl
OgogICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9yQm94KElubGluZUJveCosIGJvb2wgc3RhcnQgPSB0
cnVlKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMjExODIp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzYsNyArMTM2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnNldFN0eWxlKFJlbmRlclN0eWxlKiBuZQog
CiAgICAgLy8gU2V0IHRoZSB0ZXh0IGNvbG9yIGlmIHdlJ3JlIHRoZSBib2R5LgogICAgIGlmIChp
c0JvZHkoKSkKLSAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVudCgpLT5zZXRUZXh0Q29sb3IobmV3
U3R5bGUtPmNvbG9yKCkpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRUZXh0Q29sb3IobmV3U3R5
bGUtPmNvbG9yKCkpOwogCiAgICAgaWYgKHN0eWxlKCktPm91dGxpbmVXaWR0aCgpID4gMCAmJiBz
dHlsZSgpLT5vdXRsaW5lU2l6ZSgpID4gbWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRs
aW5lKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVmlldyo+KGRvY3VtZW50KCktPnJlbmRl
cmVyKCkpLT5zZXRNYXhpbWFsT3V0bGluZVNpemUoc3R5bGUoKS0+b3V0bGluZVNpemUoKSk7CkBA
IC03NzYsOCArNzc2LDUzIEBAIGludCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja1dpZHRoKCkg
Y28KICAgICByZXR1cm4gY2ItPmF2YWlsYWJsZVdpZHRoKCk7CiB9CiAKK0ludFNpemUgUmVuZGVy
Qm94OjpvZmZzZXRGb3JQb3NpdGlvbmVkSW5Db250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWlu
ZXIpIGNvbnN0Cit7CisgICAgaWYgKCFjb250YWluZXItPmlzUmVsUG9zaXRpb25lZCgpIHx8ICFj
b250YWluZXItPmlzSW5saW5lRmxvdygpKQorICAgICAgICByZXR1cm4gSW50U2l6ZSgpOworCisg
ICAgLy8gV2hlbiB3ZSBoYXZlIGFuIGVuY2xvc2luZyByZWxwb3NpdGlvbmVkIGlubGluZSwgd2Ug
bmVlZCB0byBhZGQgaW4gdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgbGluZQorICAgIC8vIGJveCBm
cm9tIHRoZSByZXN0IG9mIHRoZSBjb250ZW50LCBidXQgb25seSBpbiB0aGUgY2FzZXMgd2hlcmUg
d2Uga25vdyB3ZSdyZSBwb3NpdGlvbmVkCisgICAgLy8gcmVsYXRpdmUgdG8gdGhlIGlubGluZSBp
dHNlbGYuCisKKyAgICBJbnRTaXplIG9mZnNldDsKKyAgICBSZW5kZXJGbG93KiBmbG93ID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyRmxvdyo+KGNvbnRhaW5lcik7CisgICAgaW50IHN4OworICAgIGludCBz
eTsKKyAgICBpZiAoZmxvdy0+Zmlyc3RMaW5lQm94KCkpIHsKKyAgICAgICAgc3ggPSBmbG93LT5m
aXJzdExpbmVCb3goKS0+eFBvcygpOworICAgICAgICBzeSA9IGZsb3ctPmZpcnN0TGluZUJveCgp
LT55UG9zKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3ggPSBmbG93LT5zdGF0aWNYKCk7Cisg
ICAgICAgIHN5ID0gZmxvdy0+c3RhdGljWSgpOworICAgIH0KKworICAgIGlmICghaGFzU3RhdGlj
WCgpKQorICAgICAgICBvZmZzZXQuc2V0V2lkdGgoc3gpOworICAgIC8vIFRoaXMgaXMgbm90IHRl
cnJpYmx5IGludHVpdGl2ZSwgYnV0IHdlIGhhdmUgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMuICBE
ZXNwaXRlIGJlaW5nIGEgYmxvY2sgZGlzcGxheSB0eXBlIGluc2lkZQorICAgIC8vIGFuIGlubGlu
ZSwgd2Ugc3RpbGwga2VlcCBvdXIgeCBsb2NrZWQgdG8gdGhlIGxlZnQgb2YgdGhlIHJlbGF0aXZl
IHBvc2l0aW9uZWQgaW5saW5lLiAgQXJndWFibHkgdGhlIGNvcnJlY3QKKyAgICAvLyBiZWhhdmlv
ciB3b3VsZCBiZSB0byBnbyBmbHVzaCBsZWZ0IHRvIHRoZSBibG9jayB0aGF0IGNvbnRhaW5zIHRo
ZSBpbmxpbmUsIGJ1dCB0aGF0IGlzbid0IHdoYXQgb3RoZXIgYnJvd3NlcnMKKyAgICAvLyBkby4K
KyAgICBlbHNlIGlmICghc3R5bGUoKS0+aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpCisg
ICAgICAgIC8vIEF2b2lkIGFkZGluZyBpbiB0aGUgbGVmdCBib3JkZXIvcGFkZGluZyBvZiB0aGUg
Y29udGFpbmluZyBibG9jayB0d2ljZS4gIFN1YnRyYWN0IGl0IG91dC4KKyAgICAgICAgb2Zmc2V0
LnNldFdpZHRoKHN4IC0gKGNvbnRhaW5pbmdCbG9jaygpLT5ib3JkZXJMZWZ0KCkgKyBjb250YWlu
aW5nQmxvY2soKS0+cGFkZGluZ0xlZnQoKSkpOworCisgICAgaWYgKCFoYXNTdGF0aWNZKCkpCisg
ICAgICAgIG9mZnNldC5zZXRIZWlnaHQoc3kpOworCisgICAgcmV0dXJuIG9mZnNldDsKK30KKwog
Ym9vbCBSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRpb24oaW50JiB4UG9zLCBpbnQmIHlQb3MsIGJv
b2wgZml4ZWQpIGNvbnN0CiB7CisgICAgaWYgKFJlbmRlclZpZXcqIHYgPSB2aWV3KCkpIHsKKyAg
ICAgICAgaWYgKExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHYtPmxheW91dFN0YXRlKCkpIHsK
KyAgICAgICAgICAgIHhQb3MgPSBsYXlvdXRTdGF0ZS0+bV9vZmZzZXQud2lkdGgoKSArIG1feDsK
KyAgICAgICAgICAgIHlQb3MgPSBsYXlvdXRTdGF0ZS0+bV9vZmZzZXQuaGVpZ2h0KCkgKyBtX3k7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChz
dHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pCiAgICAgICAgIGZpeGVkID0gdHJ1
ZTsKIApAQCAtNzg1LDM2ICs4MzAsMTIgQEAgYm9vbCBSZW5kZXJCb3g6OmFic29sdXRlUG9zaXRp
b24oaW50JiB4UAogICAgIGlmIChvICYmIG8tPmFic29sdXRlUG9zaXRpb24oeFBvcywgeVBvcywg
Zml4ZWQpKSB7CiAgICAgICAgIHlQb3MgKz0gby0+Ym9yZGVyVG9wRXh0cmEoKTsKIAotICAgICAg
ICBpZiAoc3R5bGUoKS0+cG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uICYmIG8tPmlzUmVs
UG9zaXRpb25lZCgpICYmIG8tPmlzSW5saW5lRmxvdygpKSB7Ci0gICAgICAgICAgICAvLyBXaGVu
IHdlIGhhdmUgYW4gZW5jbG9zaW5nIHJlbHBvc2l0aW9uZWQgaW5saW5lLCB3ZSBuZWVkIHRvIGFk
ZCBpbiB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBsaW5lCi0gICAgICAgICAgICAvLyBib3ggZnJv
bSB0aGUgcmVzdCBvZiB0aGUgY29udGVudCwgYnV0IG9ubHkgaW4gdGhlIGNhc2VzIHdoZXJlIHdl
IGtub3cgd2UncmUgcG9zaXRpb25lZAotICAgICAgICAgICAgLy8gcmVsYXRpdmUgdG8gdGhlIGlu
bGluZSBpdHNlbGYuCi0gICAgICAgICAgICBSZW5kZXJGbG93KiBmbG93ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyRmxvdyo+KG8pOwotICAgICAgICAgICAgaW50IHN4OwotICAgICAgICAgICAgaW50IHN5
OwotICAgICAgICAgICAgaWYgKGZsb3ctPmZpcnN0TGluZUJveCgpKSB7Ci0gICAgICAgICAgICAg
ICAgc3ggPSBmbG93LT5maXJzdExpbmVCb3goKS0+eFBvcygpOwotICAgICAgICAgICAgICAgIHN5
ID0gZmxvdy0+Zmlyc3RMaW5lQm94KCktPnlQb3MoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgc3ggPSBmbG93LT5zdGF0aWNYKCk7Ci0gICAgICAgICAgICAgICAgc3kg
PSBmbG93LT5zdGF0aWNZKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgaXNJ
bmxpbmVUeXBlID0gc3R5bGUoKS0+aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCk7Ci0KLSAg
ICAgICAgICAgIGlmICghaGFzU3RhdGljWCgpKQotICAgICAgICAgICAgICAgIHhQb3MgKz0gc3g7
Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0ZXJyaWJseSBpbnR1aXRpdmUsIGJ1dCB3ZSBo
YXZlIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJzLiAgRGVzcGl0ZSBiZWluZyBhIGJsb2NrIGRpc3Bs
YXkgdHlwZSBpbnNpZGUKLSAgICAgICAgICAgIC8vIGFuIGlubGluZSwgd2Ugc3RpbGwga2VlcCBv
dXIgeCBsb2NrZWQgdG8gdGhlIGxlZnQgb2YgdGhlIHJlbGF0aXZlIHBvc2l0aW9uZWQgaW5saW5l
LiAgQXJndWFibHkgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgIC8vIGJlaGF2aW9yIHdvdWxkIGJl
IHRvIGdvIGZsdXNoIGxlZnQgdG8gdGhlIGJsb2NrIHRoYXQgY29udGFpbnMgdGhlIGlubGluZSwg
YnV0IHRoYXQgaXNuJ3Qgd2hhdCBvdGhlciBicm93c2VycwotICAgICAgICAgICAgLy8gZG8uCi0g
ICAgICAgICAgICBpZiAoaGFzU3RhdGljWCgpICYmICFpc0lubGluZVR5cGUpCi0gICAgICAgICAg
ICAgICAgLy8gQXZvaWQgYWRkaW5nIGluIHRoZSBsZWZ0IGJvcmRlci9wYWRkaW5nIG9mIHRoZSBj
b250YWluaW5nIGJsb2NrIHR3aWNlLiAgU3VidHJhY3QgaXQgb3V0LgotICAgICAgICAgICAgICAg
IHhQb3MgKz0gc3ggLSAoY29udGFpbmluZ0Jsb2NrKCktPmJvcmRlckxlZnQoKSArIGNvbnRhaW5p
bmdCbG9jaygpLT5wYWRkaW5nTGVmdCgpKTsKLQotICAgICAgICAgICAgaWYgKCFoYXNTdGF0aWNZ
KCkpCi0gICAgICAgICAgICAgICAgeVBvcyArPSBzeTsKKyAgICAgICAgaWYgKHN0eWxlKCktPnBv
c2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbikgeworICAgICAgICAgICAgSW50U2l6ZSBvZmZz
ZXQgPSBvZmZzZXRGb3JQb3NpdGlvbmVkSW5Db250YWluZXIobyk7CisgICAgICAgICAgICB4UG9z
ICs9IG9mZnNldC53aWR0aCgpOworICAgICAgICAgICAgeVBvcyArPSBvZmZzZXQuaGVpZ2h0KCk7
CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoby0+aGFzT3ZlcmZsb3dDbGlwKCkpCiAgICAgICAg
ICAgICBvLT5sYXllcigpLT5zdWJ0cmFjdFNjcm9sbE9mZnNldCh4UG9zLCB5UG9zKTsKIApAQCAt
ODk5LDYgKzkyMCwxMCBAQCB2b2lkIFJlbmRlckJveDo6ZGVsZXRlTGluZUJveFdyYXBwZXIoKQog
SW50UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpCiB7CiAgICAg
SW50UmVjdCByID0gb3ZlcmZsb3dSZWN0KGZhbHNlKTsKKworICAgIGlmIChSZW5kZXJWaWV3KiB2
ID0gdmlldygpKQorICAgICAgICByLm1vdmUodi0+bGF5b3V0RGVsdGEoKSk7CisKICAgICBpZiAo
c3R5bGUoKSkgewogICAgICAgICBpZiAoc3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAg
ICAgICAgLy8gVGhlIHRoZW1lIG1heSB3aXNoIHRvIGluZmxhdGUgdGhlIHJlY3QgdXNlZCB3aGVu
IHJlcGFpbnRpbmcuCkBAIC05MTMsNiArOTM4LDE2IEBAIEludFJlY3QgUmVuZGVyQm94OjphYnNv
bHV0ZUNsaXBwZWRPdmVyZmwKIAogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVBYnNvbHV0ZVJlcGFp
bnRSZWN0KEludFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpCiB7CisgICAgaWYgKFJlbmRlclZpZXcq
IHYgPSB2aWV3KCkpIHsKKyAgICAgICAgaWYgKExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHYt
PmxheW91dFN0YXRlKCkpIHsKKyAgICAgICAgICAgIHJlY3QubW92ZShtX3gsIG1feSk7CisgICAg
ICAgICAgICByZWN0Lm1vdmUobGF5b3V0U3RhdGUtPm1fb2Zmc2V0KTsKKyAgICAgICAgICAgIGlm
IChsYXlvdXRTdGF0ZS0+bV9jbGlwcGVkKQorICAgICAgICAgICAgICAgIHJlY3QuaW50ZXJzZWN0
KGxheW91dFN0YXRlLT5tX2NsaXBSZWN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIGludCB4ID0gcmVjdC54KCkgKyBtX3g7CiAgICAgaW50IHkgPSByZWN0
LnkoKSArIG1feTsKIApAQCAtOTM5LDM1ICs5NzQsMTAgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVBYnNvbHV0ZVJlcGFpbnRSZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHN0eWxlKCktPnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBvLT5pc1JlbFBv
c2l0aW9uZWQoKSAmJiBvLT5pc0lubGluZUZsb3coKSkgewotICAgICAgICAgICAgLy8gV2hlbiB3
ZSBoYXZlIGFuIGVuY2xvc2luZyByZWxwb3NpdGlvbmVkIGlubGluZSwgd2UgbmVlZCB0byBhZGQg
aW4gdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgbGluZQotICAgICAgICAgICAgLy8gYm94IGZyb20g
dGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnQsIGJ1dCBvbmx5IGluIHRoZSBjYXNlcyB3aGVyZSB3ZSBr
bm93IHdlJ3JlIHBvc2l0aW9uZWQKLSAgICAgICAgICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBpbmxp
bmUgaXRzZWxmLgotICAgICAgICAgICAgUmVuZGVyRmxvdyogZmxvdyA9IHN0YXRpY19jYXN0PFJl
bmRlckZsb3cqPihvKTsKLSAgICAgICAgICAgIGludCBzeDsKLSAgICAgICAgICAgIGludCBzeTsK
LSAgICAgICAgICAgIGlmIChmbG93LT5maXJzdExpbmVCb3goKSkgewotICAgICAgICAgICAgICAg
IHN4ID0gZmxvdy0+Zmlyc3RMaW5lQm94KCktPnhQb3MoKTsKLSAgICAgICAgICAgICAgICBzeSA9
IGZsb3ctPmZpcnN0TGluZUJveCgpLT55UG9zKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHN4ID0gZmxvdy0+c3RhdGljWCgpOwotICAgICAgICAgICAgICAgIHN5ID0g
Zmxvdy0+c3RhdGljWSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIGlzSW5s
aW5lVHlwZSA9IHN0eWxlKCktPmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpOwotCi0gICAg
ICAgICAgICBpZiAoIWhhc1N0YXRpY1goKSkKLSAgICAgICAgICAgICAgICB4ICs9IHN4OwotICAg
ICAgICAgICAgLy8gVGhpcyBpcyBub3QgdGVycmlibHkgaW50dWl0aXZlLCBidXQgd2UgaGF2ZSB0
byBtYXRjaCBvdGhlciBicm93c2Vycy4gIERlc3BpdGUgYmVpbmcgYSBibG9jayBkaXNwbGF5IHR5
cGUgaW5zaWRlCi0gICAgICAgICAgICAvLyBhbiBpbmxpbmUsIHdlIHN0aWxsIGtlZXAgb3VyIHgg
bG9ja2VkIHRvIHRoZSBsZWZ0IG9mIHRoZSByZWxhdGl2ZSBwb3NpdGlvbmVkIGlubGluZS4gIEFy
Z3VhYmx5IHRoZSBjb3JyZWN0Ci0gICAgICAgICAgICAvLyBiZWhhdmlvciB3b3VsZCBiZSB0byBn
byBmbHVzaCBsZWZ0IHRvIHRoZSBibG9jayB0aGF0IGNvbnRhaW5zIHRoZSBpbmxpbmUsIGJ1dCB0
aGF0IGlzbid0IHdoYXQgb3RoZXIgYnJvd3NlcnMKLSAgICAgICAgICAgIC8vIGRvLgotICAgICAg
ICAgICAgaWYgKGhhc1N0YXRpY1goKSAmJiAhaXNJbmxpbmVUeXBlKQotICAgICAgICAgICAgICAg
IC8vIEF2b2lkIGFkZGluZyBpbiB0aGUgbGVmdCBib3JkZXIvcGFkZGluZyBvZiB0aGUgY29udGFp
bmluZyBibG9jayB0d2ljZS4gIFN1YnRyYWN0IGl0IG91dC4KLSAgICAgICAgICAgICAgICB4ICs9
IHN4IC0gKGNvbnRhaW5pbmdCbG9jaygpLT5ib3JkZXJMZWZ0KCkgKyBjb250YWluaW5nQmxvY2so
KS0+cGFkZGluZ0xlZnQoKSk7Ci0KLSAgICAgICAgICAgIGlmICghaGFzU3RhdGljWSgpKQotICAg
ICAgICAgICAgICAgIHkgKz0gc3k7CisgICAgICAgIGlmIChzdHlsZSgpLT5wb3NpdGlvbigpID09
IEFic29sdXRlUG9zaXRpb24pIHsKKyAgICAgICAgICAgIEludFNpemUgb2Zmc2V0ID0gb2Zmc2V0
Rm9yUG9zaXRpb25lZEluQ29udGFpbmVyKG8pOworICAgICAgICAgICAgeCArPSBvZmZzZXQud2lk
dGgoKTsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0LmhlaWdodCgpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSB0aGUgbGlnaHR3ZWlnaHQgY2xpcHBpbmcgcmVjdCB0
aGF0IGNvbnRyb2xzIHVzZSwgc2luY2UgaWYgfG98IGlzIGluIG1pZC1sYXlvdXQsCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gMjExODIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CiAgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmLCBib29sIGZpeGVk
ID0gZmFsc2UpOworICAgIEludFNpemUgb2Zmc2V0Rm9yUG9zaXRpb25lZEluQ29udGFpbmVyKFJl
bmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJpbmdMYXlv
dXRJZk1vdmVkKGNvbnN0IEludFJlY3QmKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b250YWluZXIuY3BwCShyZXZpc2lvbiAyMTE4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSwxMiArNDgxLDE2IEBAIHZvaWQg
UmVuZGVyQ29udGFpbmVyOjpsYXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsK
IAorICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94LCBtX3kpKTsK
KwogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBtX2ZpcnN0Q2hpbGQ7CiAgICAgd2hpbGUgKGNo
aWxkKSB7CiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICBBU1NFUlQo
Y2hpbGQtPmlzUmVuZGVySW5saW5lKCkgfHwgIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKICAgICAg
ICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CisKKyAgICB2aWV3KCktPnBv
cExheW91dFN0YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyMTE4MikKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA4LDI1ICsyMDgsMTkgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2so
Ym9vbAogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKIAotICAgIGlmICghcmVsYXlvdXRD
aGlsZHJlbiAmJiBwb3NDaGlsZE5lZWRzTGF5b3V0KCkgJiYgIW5vcm1hbENoaWxkTmVlZHNMYXlv
dXQoKSAmJiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgLy8gQWxsIHdlIGhhdmUgdG8g
aXMgbGF5IG91dCBvdXIgcG9zaXRpb25lZCBvYmplY3RzLgotICAgICAgICBsYXlvdXRQb3NpdGlv
bmVkT2JqZWN0cyhmYWxzZSk7Ci0gICAgICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKLSAgICAg
ICAgICAgIG1fbGF5ZXItPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwotICAgICAgICBz
ZXROZWVkc0xheW91dChmYWxzZSk7CisgICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYmIGxheW91
dE9ubHlQb3NpdGlvbmVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAg
SW50UmVjdCBvbGRCb3VuZHM7CiAgICAgSW50UmVjdCBvbGRPdXRsaW5lQm94OwogICAgIGJvb2wg
Y2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7CiAgICAgaWYg
KGNoZWNrRm9yUmVwYWludCkgewogICAgICAgICBvbGRCb3VuZHMgPSBhYnNvbHV0ZUNsaXBwZWRP
dmVyZmxvd1JlY3QoKTsKLSAgICAgICAgb2xkQm91bmRzLm1vdmUodmlldygpLT5sYXlvdXREZWx0
YSgpKTsKICAgICAgICAgb2xkT3V0bGluZUJveCA9IGFic29sdXRlT3V0bGluZUJveCgpOwotICAg
ICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5sYXlvdXREZWx0YSgpKTsKICAgICB9CiAK
KyAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CisK
ICAgICBpbnQgcHJldmlvdXNXaWR0aCA9IG1fd2lkdGg7CiAgICAgaW50IHByZXZpb3VzSGVpZ2h0
ID0gbV9oZWlnaHQ7CiAgICAgCkBAIC0yOTQsNiArMjg4LDggQEAgdm9pZCBSZW5kZXJGbGV4aWJs
ZUJveDo6bGF5b3V0QmxvY2soYm9vbAogICAgIGlmIChtX292ZXJmbG93V2lkdGggPCBtX3dpZHRo
KQogICAgICAgICBtX292ZXJmbG93V2lkdGggPSBtX3dpZHRoOwogCisgICAgdmlldygpLT5wb3BM
YXlvdXRTdGF0ZSgpOworCiAgICAgLy8gVXBkYXRlIG91ciBzY3JvbGxiYXJzIGlmIHdlJ3JlIG92
ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBub3cgdGhhdCB3ZSBrbm93IGlmCiAgICAgLy8gd2Ug
b3ZlcmZsb3cgb3Igbm90LgogICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3cuY3BwCShyZXZpc2lvbiAyMTE4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsNiArNDUwLDkgQEAgYm9vbCBS
ZW5kZXJGbG93OjpoaXRUZXN0TGluZXMoY29uc3QgSGl0VAogSW50UmVjdCBSZW5kZXJGbG93Ojph
YnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQogewogICAgIGlmIChpc0lubGluZUZsb3coKSkg
eworICAgICAgICAvLyBPbmx5IGNvbXBhY3RzIGFuZCBydW4taW5zIGFyZSBhbGxvd2VkIGluIGhl
cmUgZHVyaW5nIGxheW91dC4KKyAgICAgICAgQVNTRVJUKCF2aWV3KCkgfHwgIXZpZXcoKS0+bGF5
b3V0U3RhdGUoKSB8fCBpc0NvbXBhY3QoKSB8fCBpc1J1bkluKCkpOworCiAgICAgICAgIGlmICgh
Zmlyc3RMaW5lQm94KCkpCiAgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkocmV2aXNpb24gMjExODIp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOSBAQCB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OmxheW91dCgp
CiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCisgICAgLy8gQXJiaXRyYXJ5IGFmZmlu
ZSB0cmFuc2Zvcm1zIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBMYXlvdXRTdGF0ZS4KKyAgICB2aWV3
KCktPmRpc2FibGVMYXlvdXRTdGF0ZSgpOworCiAgICAgSW50UmVjdCBvbGRCb3VuZHM7CiAgICAg
SW50UmVjdCBvbGRPdXRsaW5lQm94OwogICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tG
b3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7CkBAIC0xMDEsNiArMTA0LDcgQEAgdm9pZCBSZW5kZXJG
b3JlaWduT2JqZWN0OjpsYXlvdXQoKQogICAgIGlmIChjaGVja0ZvclJlcGFpbnQpCiAgICAgICAg
IHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKG9sZEJvdW5kcywgb2xkT3V0bGluZUJveCk7CiAK
KyAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFs
c2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAkocmV2
aXNpb24gMjExODIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsOSArODUsNyBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6Omxh
eW91dCgpCiAgICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdM
YXlvdXQoKTsKICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KSB7CiAgICAgICAgIG9sZEJvdW5kcyA9
IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwotICAgICAgICBvbGRCb3VuZHMubW92ZSh2
aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgICAgICBvbGRPdXRsaW5lQm94ID0gYWJzb2x1dGVP
dXRsaW5lQm94KCk7Ci0gICAgICAgIG9sZE91dGxpbmVCb3gubW92ZSh2aWV3KCktPmxheW91dERl
bHRhKCkpOwogICAgIH0KICAgICBjYWxjV2lkdGgoKTsKICAgICBjYWxjSGVpZ2h0KCk7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyMTE4MikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDkgKzMwOSw3
IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiAgICAgYm9vbCBjaGVja0ZvclJlcGFpbnQg
PSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKICAgICBpZiAoY2hlY2tGb3JSZXBhaW50
KSB7CiAgICAgICAgIG9sZEJvdW5kcyA9IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwot
ICAgICAgICBvbGRCb3VuZHMubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgICAgICBv
bGRPdXRsaW5lQm94ID0gYWJzb2x1dGVPdXRsaW5lQm94KCk7Ci0gICAgICAgIG9sZE91dGxpbmVC
b3gubW92ZSh2aWV3KCktPmxheW91dERlbHRhKCkpOwogICAgIH0KIAogICAgIC8vIG1pbmltdW0g
aGVpZ2h0CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMTE4MikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk5LDExICsxOTksMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMo
YgogICAgIHVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoKTsKICAgICAgICAgCiAgICAgaWYgKG1faGFz
VmlzaWJsZUNvbnRlbnQpIHsKKyAgICAgICAgUmVuZGVyVmlldyogdmlldyA9IG1fb2JqZWN0LT52
aWV3KCk7CisgICAgICAgIEFTU0VSVCh2aWV3KTsKKyAgICAgICAgLy8gRklYTUU6IE9wdGltaXpl
IHVzaW5nIExheW91dFN0YXRlIGFuZCByZW1vdmUgdGhlIGRpc2FibGVMYXlvdXRTdGF0ZSgpIGNh
bGwKKyAgICAgICAgLy8gZnJvbSB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKS4KKyAgICAg
ICAgQVNTRVJUKCF2aWV3LT5sYXlvdXRTdGF0ZSgpKTsKKwogICAgICAgICBJbnRSZWN0IG5ld1Jl
Y3QgPSBtX29iamVjdC0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CiAgICAgICAgIElu
dFJlY3QgbmV3T3V0bGluZUJveCA9IG1fb2JqZWN0LT5hYnNvbHV0ZU91dGxpbmVCb3goKTsKICAg
ICAgICAgaWYgKGNoZWNrRm9yUmVwYWludCkgewotICAgICAgICAgICAgUmVuZGVyVmlldyogdmll
dyA9IG1fb2JqZWN0LT52aWV3KCk7Ci0gICAgICAgICAgICBBU1NFUlQodmlldyk7CiAgICAgICAg
ICAgICBpZiAodmlldyAmJiAhdmlldy0+cHJpbnRpbmcoKSkgewogICAgICAgICAgICAgICAgIGJv
b2wgZGlkTW92ZSA9IG5ld091dGxpbmVCb3gubG9jYXRpb24oKSAhPSBtX291dGxpbmVCb3gubG9j
YXRpb24oKTsKICAgICAgICAgICAgICAgICBpZiAoIWRpZE1vdmUgJiYgIW1fcmVwYWludE92ZXJm
bG93T25SZXNpemUpCkBAIC0zNTcsMzkgKzM2MSwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9uKCkKICAgICAgICAgLy8gRm9yIHBvc2l0aW9uZWQgbGF5ZXJzLCB3ZSBz
dWJ0cmFjdCBvdXQgdGhlIGVuY2xvc2luZyBwb3NpdGlvbmVkIGxheWVyJ3Mgc2Nyb2xsIG9mZnNl
dC4KICAgICAgICAgcG9zaXRpb25lZFBhcmVudC0+c3VidHJhY3RTY3JvbGxPZmZzZXQoeCwgeSk7
CiAgICAgICAgIAotICAgICAgICBpZiAobV9vYmplY3QtPmlzUG9zaXRpb25lZCgpICYmIHBvc2l0
aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCktPmlzUmVsUG9zaXRpb25lZCgpICYmCi0gICAgICAgICAg
ICBwb3NpdGlvbmVkUGFyZW50LT5yZW5kZXJlcigpLT5pc0lubGluZUZsb3coKSkgewotICAgICAg
ICAgICAgLy8gV2hlbiB3ZSBoYXZlIGFuIGVuY2xvc2luZyByZWxwb3NpdGlvbmVkIGlubGluZSwg
d2UgbmVlZCB0byBhZGQgaW4gdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgbGluZQotICAgICAgICAg
ICAgLy8gYm94IGZyb20gdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnQsIGJ1dCBvbmx5IGluIHRoZSBj
YXNlcyB3aGVyZSB3ZSBrbm93IHdlJ3JlIHBvc2l0aW9uZWQKLSAgICAgICAgICAgIC8vIHJlbGF0
aXZlIHRvIHRoZSBpbmxpbmUgaXRzZWxmLgotICAgICAgICAgICAgUmVuZGVyRmxvdyogZmxvdyA9
IHN0YXRpY19jYXN0PFJlbmRlckZsb3cqPihwb3NpdGlvbmVkUGFyZW50LT5yZW5kZXJlcigpKTsK
LSAgICAgICAgICAgIGludCBzeCA9IDAsIHN5ID0gMDsKLSAgICAgICAgICAgIGlmIChmbG93LT5m
aXJzdExpbmVCb3goKSkgewotICAgICAgICAgICAgICAgIHN4ID0gZmxvdy0+Zmlyc3RMaW5lQm94
KCktPnhQb3MoKTsKLSAgICAgICAgICAgICAgICBzeSA9IGZsb3ctPmZpcnN0TGluZUJveCgpLT55
UG9zKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBzeCA9IGZsb3ctPnN0YXRpY1goKTsKLSAgICAgICAgICAgICAgICBzeSA9IGZsb3ctPnN0YXRp
Y1koKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgaXNJbmxpbmVUeXBlID0gbV9v
YmplY3QtPnN0eWxlKCktPmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAoIW1fb2JqZWN0LT5oYXNTdGF0aWNYKCkpCi0gICAgICAgICAg
ICAgICAgeCArPSBzeDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gVGhpcyBpcyBub3Qg
dGVycmlibHkgaW50dWl0aXZlLCBidXQgd2UgaGF2ZSB0byBtYXRjaCBvdGhlciBicm93c2Vycy4g
IERlc3BpdGUgYmVpbmcgYSBibG9jayBkaXNwbGF5IHR5cGUgaW5zaWRlCi0gICAgICAgICAgICAv
LyBhbiBpbmxpbmUsIHdlIHN0aWxsIGtlZXAgb3VyIHggbG9ja2VkIHRvIHRoZSBsZWZ0IG9mIHRo
ZSByZWxhdGl2ZSBwb3NpdGlvbmVkIGlubGluZS4gIEFyZ3VhYmx5IHRoZSBjb3JyZWN0Ci0gICAg
ICAgICAgICAvLyBiZWhhdmlvciB3b3VsZCBiZSB0byBnbyBmbHVzaCBsZWZ0IHRvIHRoZSBibG9j
ayB0aGF0IGNvbnRhaW5zIHRoZSBpbmxpbmUsIGJ1dCB0aGF0IGlzbid0IHdoYXQgb3RoZXIgYnJv
d3NlcnMKLSAgICAgICAgICAgIC8vIGRvLgotICAgICAgICAgICAgaWYgKG1fb2JqZWN0LT5oYXNT
dGF0aWNYKCkgJiYgIWlzSW5saW5lVHlwZSkKLSAgICAgICAgICAgICAgICAvLyBBdm9pZCBhZGRp
bmcgaW4gdGhlIGxlZnQgYm9yZGVyL3BhZGRpbmcgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgdHdp
Y2UuICBTdWJ0cmFjdCBpdCBvdXQuCi0gICAgICAgICAgICAgICAgeCArPSBzeCAtIChtX29iamVj
dC0+Y29udGFpbmluZ0Jsb2NrKCktPmJvcmRlckxlZnQoKSArIG1fb2JqZWN0LT5jb250YWluaW5n
QmxvY2soKS0+cGFkZGluZ0xlZnQoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgh
bV9vYmplY3QtPmhhc1N0YXRpY1koKSkKLSAgICAgICAgICAgICAgICB5ICs9IHN5OworICAgICAg
ICBpZiAobV9vYmplY3QtPmlzUG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICBJbnRTaXplIG9m
ZnNldCA9IHN0YXRpY19jYXN0PFJlbmRlckJveCo+KG1fb2JqZWN0KS0+b2Zmc2V0Rm9yUG9zaXRp
b25lZEluQ29udGFpbmVyKHBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCkpOworICAgICAgICAg
ICAgeCArPSBvZmZzZXQud2lkdGgoKTsKKyAgICAgICAgICAgIHkgKz0gb2Zmc2V0LmhlaWdodCgp
OwogICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHBhcmVudCgpKQorICAgIH0gZWxzZSBp
ZiAocGFyZW50KCkpCiAgICAgICAgIHBhcmVudCgpLT5zdWJ0cmFjdFNjcm9sbE9mZnNldCh4LCB5
KTsKICAgICAKICAgICBzZXRQb3MoeCx5KTsKQEAgLTExODMsOCArMTE2MCwxOCBAQCBSZW5kZXJM
YXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0CiAgICAgICAgIC8vIHRvIHB1bGwgb3Vy
IHNjcm9sbCBvZmZzZXRzIGJhY2sgdG8gdGhlIG1heCAob3IgcHVzaCB0aGVtIHVwIHRvIHRoZSBt
aW4pLgogICAgICAgICBpbnQgbmV3WCA9IG1heCgwLCBtaW4oc2Nyb2xsWE9mZnNldCgpLCBzY3Jv
bGxXaWR0aCgpIC0gbV9vYmplY3QtPmNsaWVudFdpZHRoKCkpKTsKICAgICAgICAgaW50IG5ld1kg
PSBtYXgoMCwgbWluKG1fc2Nyb2xsWSwgc2Nyb2xsSGVpZ2h0KCkgLSBtX29iamVjdC0+Y2xpZW50
SGVpZ2h0KCkpKTsKLSAgICAgICAgaWYgKG5ld1ggIT0gc2Nyb2xsWE9mZnNldCgpIHx8IG5ld1kg
IT0gbV9zY3JvbGxZKQorICAgICAgICBpZiAobmV3WCAhPSBzY3JvbGxYT2Zmc2V0KCkgfHwgbmV3
WSAhPSBtX3Njcm9sbFkpIHsKKyAgICAgICAgICAgIFJlbmRlclZpZXcqIHZpZXcgPSBtX29iamVj
dC0+dmlldygpOworICAgICAgICAgICAgQVNTRVJUKHZpZXcpOworICAgICAgICAgICAgLy8gc2Ny
b2xsVG9PZmZzZXQoKSBtYXkgY2FsbCB1cGRhdGVMYXllclBvc2l0aW9ucygpLCB3aGljaCBkb2Vz
bid0IHdvcmsKKyAgICAgICAgICAgIC8vIHdpdGggTGF5b3V0U3RhdGUuCisgICAgICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZSBkaXNhYmxlTGF5b3V0U3RhdGUvZW5hYmxlTGF5b3V0U3RhdGUg
aWYgdGhlIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICAgICBpZiAodmlldykKKyAgICAgICAgICAg
ICAgICB2aWV3LT5kaXNhYmxlTGF5b3V0U3RhdGUoKTsKICAgICAgICAgICAgIHNjcm9sbFRvT2Zm
c2V0KG5ld1gsIG5ld1kpOworICAgICAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICAgICAg
dmlldy0+ZW5hYmxlTGF5b3V0U3RhdGUoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wg
aGF2ZUhvcml6b250YWxCYXIgPSBtX2hCYXI7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uY3BwCShyZXZpc2lvbiAyMTE4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5k
ZXJMaXN0TWFya2VyLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCkBAIC0yMDAsNiArMjAxLDkgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6dXBkYXRl
TWFya2VyTG9jYXRpbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hcmtlclBhciAhPSBsaW5l
Qm94UGFyZW50IHx8IG1fbWFya2VyLT5wcmVmV2lkdGhzRGlydHkoKSkgeworICAgICAgICAgICAg
Ly8gUmVtb3ZpbmcgYW5kIGFkZGluZyB0aGUgbWFya2VyIGNhbiB0cmlnZ2VyIHJlcGFpbnRpbmcg
aW4KKyAgICAgICAgICAgIC8vIGNvbnRhaW5lcnMgb3RoZXIgdGhhbiBvdXJzZWx2ZXMsIHNvIHdl
IG5lZWQgdG8gZGlzYWJsZSBMYXlvdXRTdGF0ZS4KKyAgICAgICAgICAgIHZpZXcoKS0+ZGlzYWJs
ZUxheW91dFN0YXRlKCk7CiAgICAgICAgICAgICB1cGRhdGVGaXJzdExldHRlcigpOwogICAgICAg
ICAgICAgbV9tYXJrZXItPnJlbW92ZSgpOwogICAgICAgICAgICAgaWYgKCFsaW5lQm94UGFyZW50
KQpAQCAtMjA3LDYgKzIxMSw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OnVwZGF0ZU1hcmtlckxv
Y2F0aW8KICAgICAgICAgICAgIGxpbmVCb3hQYXJlbnQtPmFkZENoaWxkKG1fbWFya2VyLCBmaXJz
dE5vbk1hcmtlckNoaWxkKGxpbmVCb3hQYXJlbnQpKTsKICAgICAgICAgICAgIGlmIChtX21hcmtl
ci0+cHJlZldpZHRoc0RpcnR5KCkpCiAgICAgICAgICAgICAgICAgbV9tYXJrZXItPmNhbGNQcmVm
V2lkdGhzKCk7CisgICAgICAgICAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlz
aW9uIDIxMTgyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZihjb25zdCAKIAogYm9vbCBSZW5kZXJPYmplY3Q6OmlzUm9vdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPnJlbmRlcmVyKCkgPT0gdGhpcyAmJiBlbGVt
ZW50KCktPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpID09IGVsZW1lbnQoKTsKKyAgICBy
ZXR1cm4gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+cmVuZGVyZXIoKSA9PSB0aGlzICYmIGRvY3Vt
ZW50KCktPmRvY3VtZW50RWxlbWVudCgpID09IGVsZW1lbnQoKTsKIH0KIAogYm9vbCBSZW5kZXJP
YmplY3Q6OmlzQm9keSgpIGNvbnN0CkBAIC0xODkzLDcgKzE4OTMsNyBAQCBJbnRSZWN0IFJlbmRl
ck9iamVjdDo6YWJzb2x1dGVDbGlwcGVkT3ZlCiB2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZUFi
c29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYgciwgYm9vbCBmKQogewogICAgIGlmIChwYXJlbnQo
KSkKLSAgICAgICAgcmV0dXJuIHBhcmVudCgpLT5jb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChy
LCBmKTsKKyAgICAgICAgcGFyZW50KCktPmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYp
OwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVu
ZGVyT2JqZWN0KiBjaGlsZCkKQEAgLTI0MjEsOCArMjQyMSwxMiBAQCBSZW5kZXJPYmplY3QqIFJl
bmRlck9iamVjdDo6Y29udGFpbmVyKCkgCiAgICAgLy8gdGhlIGxheW91dCBvZiB0aGUgcG9zaXRp
b25lZCBvYmplY3QuICBUaGlzIGRvZXMgbWVhbiB0aGF0IGNhbGNBYnNvbHV0ZUhvcml6b250YWwg
YW5kCiAgICAgLy8gY2FsY0Fic29sdXRlVmVydGljYWwgaGF2ZSB0byB1c2UgY29udGFpbmVyKCku
CiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcGFyZW50KCk7CisKKyAgICBpZiAoaXNUZXh0KCkpCisg
ICAgICAgIHJldHVybiBvOworCiAgICAgRVBvc2l0aW9uIHBvcyA9IG1fc3R5bGUtPnBvc2l0aW9u
KCk7Ci0gICAgaWYgKCFpc1RleHQoKSAmJiBwb3MgPT0gRml4ZWRQb3NpdGlvbikgeworICAgIGlm
IChwb3MgPT0gRml4ZWRQb3NpdGlvbikgewogICAgICAgICAvLyBjb250YWluZXIoKSBjYW4gYmUg
Y2FsbGVkIG9uIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBpbiB0aGUKICAgICAgICAgLy8gdHJlZSB5
ZXQuICBXZSBkb24ndCBjYWxsIHZpZXcoKSBzaW5jZSBpdCB3aWxsIGFzc2VydCBpZiBpdAogICAg
ICAgICAvLyBjYW4ndCBnZXQgYmFjayB0byB0aGUgY2FudmFzLiAgSW5zdGVhZCB3ZSBqdXN0IHdh
bGsgYXMgaGlnaCB1cApAQCAtMjQzMSw3ICsyNDM1LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJP
YmplY3Q6OmNvbnRhaW5lcigpIAogICAgICAgICAvLyB3ZSdsbCBqdXN0IHJldHVybiAwKS4KICAg
ICAgICAgd2hpbGUgKG8gJiYgby0+cGFyZW50KCkpCiAgICAgICAgICAgICBvID0gby0+cGFyZW50
KCk7Ci0gICAgfSBlbHNlIGlmICghaXNUZXh0KCkgJiYgcG9zID09IEFic29sdXRlUG9zaXRpb24p
IHsKKyAgICB9IGVsc2UgaWYgKHBvcyA9PSBBYnNvbHV0ZVBvc2l0aW9uKSB7CiAgICAgICAgIC8v
IFNhbWUgZ29lcyBoZXJlLiAgV2UgdGVjaG5pY2FsbHkganVzdCB3YW50IG91ciBjb250YWluaW5n
IGJsb2NrLCBidXQKICAgICAgICAgLy8gd2UgbWF5IG5vdCBoYXZlIG9uZSBpZiB3ZSdyZSBwYXJ0
IG9mIGFuIHVuaW5zdGFsbGVkIHN1YnRyZWUuICBXZSdsbAogICAgICAgICAvLyBjbGltYiBhcyBo
aWdoIGFzIHdlIGNhbiB0aG91Z2guCkBAIC0zMDI1LDYgKzMwMjksNyBAQCBJbnRSZWN0IFJlbmRl
ck9iamVjdDo6YWJzb2x1dGVPdXRsaW5lQm94CiAgICAgaW50IHgsIHk7CiAgICAgYWJzb2x1dGVQ
b3NpdGlvbih4LCB5KTsKICAgICBib3gubW92ZSh4LCB5KTsKKyAgICBib3gubW92ZSh2aWV3KCkt
PmxheW91dERlbHRhKCkpOwogICAgIGJveC5pbmZsYXRlKHN0eWxlKCktPm91dGxpbmVTaXplKCkp
OwogICAgIHJldHVybiBib3g7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdD
b250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAJKHJldmlzaW9uIDIxMTgyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1
ZGUgIlNWR01hcmtlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZUNsaXBwZXIuaCIK
QEAgLTkxLDYgKzkyLDkgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAKICAg
ICBjYWxjVmlld3BvcnQoKTsKIAorICAgIC8vIEFyYml0cmFyeSBhZmZpbmUgdHJhbnNmb3JtcyBh
cmUgaW5jb21wYXRpYmxlIHdpdGggTGF5b3V0U3RhdGUuCisgICAgdmlldygpLT5kaXNhYmxlTGF5
b3V0U3RhdGUoKTsKKwogICAgIEludFJlY3Qgb2xkQm91bmRzOwogICAgIEludFJlY3Qgb2xkT3V0
bGluZUJveDsKICAgICBib29sIGNoZWNrRm9yUmVwYWludCA9IGNoZWNrRm9yUmVwYWludER1cmlu
Z0xheW91dCgpOwpAQCAtMTE3LDYgKzEyMSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjps
YXlvdXQoKQogICAgIGlmIChzZWxmTmVlZHNMYXlvdXQoKSAmJiBjaGVja0ZvclJlcGFpbnQpCiAg
ICAgICAgIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKG9sZEJvdW5kcywgb2xkT3V0bGluZUJv
eCk7CiAKKyAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlv
dXQoZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lv
biAyMTE4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZpeGVkVGFibGVMYXlvdXQuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJl
bmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCkBAIC0yNjUs
MTIgKzI2Niw4IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiB7CiAgICAgQVNTRVJUKG5l
ZWRzTGF5b3V0KCkpOwogCi0gICAgaWYgKHBvc0NoaWxkTmVlZHNMYXlvdXQoKSAmJiAhbm9ybWFs
Q2hpbGROZWVkc0xheW91dCgpICYmICFzZWxmTmVlZHNMYXlvdXQoKSkgewotICAgICAgICAvLyBB
bGwgd2UgaGF2ZSB0byBkbyBpcyBsYXkgb3V0IG91ciBwb3NpdGlvbmVkIG9iamVjdHMuCi0gICAg
ICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGZhbHNlKTsKLSAgICAgICAgc2V0TmVlZHNMYXlv
dXQoZmFsc2UpOworICAgIGlmIChsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKICAgICAg
ICAgCkBAIC0yNzksMTEgKzI3NiwxMSBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAg
IGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7CiAg
ICAgaWYgKGNoZWNrRm9yUmVwYWludCkgewogICAgICAgICBvbGRCb3VuZHMgPSBhYnNvbHV0ZUNs
aXBwZWRPdmVyZmxvd1JlY3QoKTsKLSAgICAgICAgb2xkQm91bmRzLm1vdmUodmlldygpLT5sYXlv
dXREZWx0YSgpKTsKICAgICAgICAgb2xkT3V0bGluZUJveCA9IGFic29sdXRlT3V0bGluZUJveCgp
OwotICAgICAgICBvbGRPdXRsaW5lQm94Lm1vdmUodmlldygpLT5sYXlvdXREZWx0YSgpKTsKICAg
ICB9CiAgICAgCisgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6ZShtX3gs
IG1feSkpOworCiAgICAgbV9oZWlnaHQgPSAwOwogICAgIG1fb3ZlcmZsb3dIZWlnaHQgPSAwOwog
ICAgIG1fb3ZlcmZsb3dUb3AgPSAwOwpAQCAtNDI0LDYgKzQyMSw4IEBAIHZvaWQgUmVuZGVyVGFi
bGU6OmxheW91dCgpCiAgICAgLy8gRklYTUU6IE9ubHkgcGFzcyB0cnVlIGlmIHdpZHRoIG9yIGhl
aWdodCBjaGFuZ2VkLgogICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKHRydWUpOwogCisgICAg
dmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOworCiAgICAgYm9vbCBkaWRGdWxsUmVwYWludCA9IHRy
dWU7CiAgICAgLy8gUmVwYWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlmIHRoZXkgYXJlIGRpZmZl
cmVudCBmcm9tIG91ciBvbGQgYm91bmRzLgogICAgIGlmIChjaGVja0ZvclJlcGFpbnQpCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDIxMTgyKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJs
ZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDb2wuaCIKKyNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwpAQCAtMTc1LDYgKzE3NiwxMCBAQCBJbnRSZWN0IFJlbmRlclRhYmxlQ2VsbDo6YWJzb2x1
dGVDbGlwcGVkCiAgICAgICAgIGxlZnQgPSBtYXgobGVmdCwgLW92ZXJmbG93TGVmdChmYWxzZSkp
OwogICAgICAgICB0b3AgPSBtYXgodG9wLCAtb3ZlcmZsb3dUb3AoZmFsc2UpIC0gYm9yZGVyVG9w
RXh0cmEoKSk7CiAgICAgICAgIEludFJlY3QgcigtbGVmdCwgLWJvcmRlclRvcEV4dHJhKCkgLSB0
b3AsIGxlZnQgKyBtYXgod2lkdGgoKSArIHJpZ2h0LCBvdmVyZmxvd1dpZHRoKGZhbHNlKSksIGJv
cmRlclRvcEV4dHJhKCkgKyB0b3AgKyBtYXgoaGVpZ2h0KCkgKyBib3R0b20gKyBib3JkZXJCb3R0
b21FeHRyYSgpLCBvdmVyZmxvd0hlaWdodChmYWxzZSkpKTsKKworICAgICAgICBpZiAoUmVuZGVy
VmlldyogdiA9IHZpZXcoKSkKKyAgICAgICAgICAgIHIubW92ZSh2LT5sYXlvdXREZWx0YSgpKTsK
KwogICAgICAgICBjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChyKTsKICAgICAgICAgcmV0dXJu
IHI7CiAgICAgfQpAQCAtMTg0LDE1ICsxODksMjAgQEAgSW50UmVjdCBSZW5kZXJUYWJsZUNlbGw6
OmFic29sdXRlQ2xpcHBlZAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVBYnNvbHV0ZVJl
cGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZml4ZWQpCiB7CiAgICAgci5zZXRZKHIueSgpICsg
bV90b3BFeHRyYSk7Ci0gICAgci5tb3ZlKC1wYXJlbnQoKS0+eFBvcygpLCAtcGFyZW50KCktPnlQ
b3MoKSk7IC8vIFJvd3MgYXJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UsIHNvIGRvbid0
IGFkZCB0aGVpciBvZmZzZXQgaW4uCisgICAgUmVuZGVyVmlldyogdiA9IHZpZXcoKTsKKyAgICBp
ZiAoIXYgfHwgIXYtPmxheW91dFN0YXRlKCkpCisgICAgICAgIHIubW92ZSgtcGFyZW50KCktPnhQ
b3MoKSwgLXBhcmVudCgpLT55UG9zKCkpOyAvLyBSb3dzIGFyZSBpbiB0aGUgc2FtZSBjb29yZGlu
YXRlIHNwYWNlLCBzbyBkb24ndCBhZGQgdGhlaXIgb2Zmc2V0IGluLgogICAgIFJlbmRlckJsb2Nr
Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChyLCBmaXhlZCk7CiB9CiAKIGJvb2wgUmVuZGVy
VGFibGVDZWxsOjphYnNvbHV0ZVBvc2l0aW9uKGludCYgeFBvcywgaW50JiB5UG9zLCBib29sIGZp
eGVkKSBjb25zdAogewogICAgIGJvb2wgcmVzdWx0ID0gUmVuZGVyQmxvY2s6OmFic29sdXRlUG9z
aXRpb24oeFBvcywgeVBvcywgZml4ZWQpOwotICAgIHhQb3MgLT0gcGFyZW50KCktPnhQb3MoKTsg
Ly8gUm93cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSwgc28gZG9uJ3QgYWRkIHRo
ZWlyIG9mZnNldCBpbi4KLSAgICB5UG9zIC09IHBhcmVudCgpLT55UG9zKCk7CisgICAgUmVuZGVy
VmlldyogdiA9IHZpZXcoKTsKKyAgICBpZiAoIXYgfHwgIXYtPmxheW91dFN0YXRlKCkpIHsKKyAg
ICAgICAgeFBvcyAtPSBwYXJlbnQoKS0+eFBvcygpOyAvLyBSb3dzIGFyZSBpbiB0aGUgc2FtZSBj
b29yZGluYXRlIHNwYWNlLCBzbyBkb24ndCBhZGQgdGhlaXIgb2Zmc2V0IGluLgorICAgICAgICB5
UG9zIC09IHBhcmVudCgpLT55UG9zKCk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAJKHJldmlzaW9uIDIxMTgyKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEzLDYgKzExNCw5IEBAIHZvaWQgUmVu
ZGVyVGFibGVSb3c6OmxheW91dCgpCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCisg
ICAgLy8gVGFibGUgcm93cyBkbyBub3QgYWRkIHRyYW5zbGF0aW9uLgorICAgIHZpZXcoKS0+cHVz
aExheW91dFN0YXRlKHRoaXMsIEludFNpemUoKSk7CisKICAgICBmb3IgKFJlbmRlck9iamVjdCog
Y2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNUYWJsZUNlbGwoKSkgewogICAgICAgICAgICAgUmVu
ZGVyVGFibGVDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGFibGVDZWxsKj4oY2hpbGQp
OwpAQCAtMTIyLDYgKzEyNiw4IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OmxheW91dCgpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2aWV3KCktPnBvcExheW91dFN0YXRl
KCk7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDIxMTgyKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRh
YmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yNjMsNiArMjY0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNl
Y3Rpb246OmFkZENlbGwoUmVuZGVyVAogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnNldENlbGxX
aWR0aHMoKQogewogICAgIFZlY3RvcjxpbnQ+JiBjb2x1bW5Qb3MgPSB0YWJsZSgpLT5jb2x1bW5Q
b3NpdGlvbnMoKTsKKyAgICBib29sIHB1c2hlZExheW91dFN0YXRlID0gZmFsc2U7CiAKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1fZ3JpZFJvd3M7IGkrKykgewogICAgICAgICBSb3cmIHJvdyA9
ICptX2dyaWRbaV0ucm93OwpAQCAtMjgzLDEyICsyODUsMjIgQEAgdm9pZCBSZW5kZXJUYWJsZVNl
Y3Rpb246OnNldENlbGxXaWR0aHMoKQogICAgICAgICAgICAgaW50IG9sZFdpZHRoID0gY2VsbC0+
d2lkdGgoKTsKICAgICAgICAgICAgIGlmICh3ICE9IG9sZFdpZHRoKSB7CiAgICAgICAgICAgICAg
ICAgY2VsbC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0YWJs
ZSgpLT5zZWxmTmVlZHNMYXlvdXQoKSAmJiBjZWxsLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlv
dXQoKSkKKyAgICAgICAgICAgICAgICBpZiAoIXRhYmxlKCktPnNlbGZOZWVkc0xheW91dCgpICYm
IGNlbGwtPmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghcHVzaGVkTGF5b3V0U3RhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRlY2huaWNhbGx5LCB3ZSBzaG91bGQgYWxzbyBwdXNoIHN0YXRlIGZvciB0aGUgcm93LCBidXQg
c2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvd3MgZG9uJ3QgcHVzaCBhIGNvb3Jk
aW5hdGUgdHJhbnNmb3JtLCB0aGF0J3Mgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94LCBtX3kpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hlZExheW91dFN0YXRlID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjZWxsLT5yZXBhaW50KCk7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNlbGwtPnNldFdpZHRoKHcpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGlmIChwdXNoZWRMYXlvdXRT
dGF0ZSkKKyAgICAgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOwogfQogCiB2b2lkIFJlbmRl
clRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCkBAIC0yOTYsNiArMzA4LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dIZWlnaHQoKQogICAgIFJlbmRlclRhYmxlQ2VsbCog
Y2VsbDsKIAogICAgIGludCBzcGFjaW5nID0gdGFibGUoKS0+dkJvcmRlclNwYWNpbmcoKTsKKyAg
ICBib29sIHB1c2hlZExheW91dFN0YXRlID0gZmFsc2U7CiAKICAgICBtX3Jvd1Bvcy5yZXNpemUo
bV9ncmlkUm93cyArIDEpOwogICAgIG1fcm93UG9zWzBdID0gc3BhY2luZzsKQEAgLTMyNCw2ICsz
MzcsMTIgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dIZWlnaHQoKQogICAgICAg
ICAgICAgaW50IGluZHggPSBtYXgociAtIGNlbGwtPnJvd1NwYW4oKSArIDEsIDApOwogCiAgICAg
ICAgICAgICBpZiAoY2VsbC0+b3ZlcnJpZGVTaXplKCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXB1c2hlZExheW91dFN0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRlY2hu
aWNhbGx5LCB3ZSBzaG91bGQgYWxzbyBwdXNoIHN0YXRlIGZvciB0aGUgcm93LCBidXQgc2luY2UK
KyAgICAgICAgICAgICAgICAgICAgLy8gcm93cyBkb24ndCBwdXNoIGEgY29vcmRpbmF0ZSB0cmFu
c2Zvcm0sIHRoYXQncyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICB2aWV3KCkt
PnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2hlZExheW91dFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgY2VsbC0+c2V0T3ZlcnJpZGVTaXplKC0xKTsKICAgICAgICAgICAgICAgICBj
ZWxsLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBj
ZWxsLT5sYXlvdXRJZk5lZWRlZCgpOwpAQCAtMzYwLDYgKzM3OSw5IEBAIHZvaWQgUmVuZGVyVGFi
bGVTZWN0aW9uOjpjYWxjUm93SGVpZ2h0KCkKIAogICAgICAgICBtX3Jvd1Bvc1tyICsgMV0gPSBt
YXgobV9yb3dQb3NbciArIDFdLCBtX3Jvd1Bvc1tyXSk7CiAgICAgfQorCisgICAgaWYgKHB1c2hl
ZExheW91dFN0YXRlKQorICAgICAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CiB9CiAKIGlu
dCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHRvQWRkKQpAQCAtNDQyLDYgKzQ2
NCw4IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHQKICAgICBpbnQg
dnNwYWNpbmcgPSB0YWJsZSgpLT52Qm9yZGVyU3BhY2luZygpOwogICAgIGludCBuRWZmQ29scyA9
IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKIAorICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRo
aXMsIEludFNpemUobV94LCBtX3kpKTsKKwogICAgIGZvciAoaW50IHIgPSAwOyByIDwgdG90YWxS
b3dzOyByKyspIHsKICAgICAgICAgLy8gU2V0IHRoZSByb3cncyB4L3kgcG9zaXRpb24gYW5kIHdp
ZHRoL2hlaWdodC4KICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcm93UmVuZGVyZXIgPSBtX2dy
aWRbcl0ucm93UmVuZGVyZXIpIHsKQEAgLTU1MSw2ICs1NzUsOCBAQCBpbnQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpsYXlvdXRSb3dzKGludCB0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2aWV3KCkt
PnBvcExheW91dFN0YXRlKCk7CisKICAgICBtX2hlaWdodCA9IG1fcm93UG9zW3RvdGFsUm93c107
CiAgICAgbV9vdmVyZmxvd0hlaWdodCA9IG1heChtX292ZXJmbG93SGVpZ2h0LCBtX2hlaWdodCk7
CiAgICAgcmV0dXJuIG1faGVpZ2h0OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJl
dmlzaW9uIDIxMTgyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAgUmVuZGVyVmlldzo6UmVuZGVyVmlldyhOb2RlKiBu
b2RlLCBGcmFtZQogICAgICwgbV9zZWxlY3Rpb25FbmRQb3MoLTEpCiAgICAgLCBtX3ByaW50SW1h
Z2VzKHRydWUpCiAgICAgLCBtX21heGltYWxPdXRsaW5lU2l6ZSgwKQorICAgICwgbV9sYXlvdXRT
dGF0ZSgwKQorICAgICwgbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCgwKQogewogICAgIC8vIENs
ZWFyIG91ciBhbm9ueW1vdXMgYml0LCBzZXQgYmVjYXVzZSBSZW5kZXJPYmplY3QgYXNzdW1lcwog
ICAgIC8vIGFueSByZW5kZXJlciB3aXRoIGRvY3VtZW50IGFzIHRoZSBub2RlIGlzIGFub255bW91
cy4KQEAgLTk5LDYgKzEwMSwxMiBAQCB2b2lkIFJlbmRlclZpZXc6OmxheW91dCgpCiAgICAgaWYg
KHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgZmFs
c2UpOwogICAgIAorICAgIEFTU0VSVCghbV9sYXlvdXRTdGF0ZSk7CisgICAgTGF5b3V0U3RhdGUg
c3RhdGU7CisgICAgLy8gRklYTUU6IE1heSBiZSBiZXR0ZXIgdG8gcHVzaCBhIGNsaXAgYW5kIGF2
b2lkIGlzc3Vpbmcgb2Zmc2NyZWVuIHJlcGFpbnRzLgorICAgIHN0YXRlLm1fY2xpcHBlZCA9IGZh
bHNlOworICAgIG1fbGF5b3V0U3RhdGUgPSAmc3RhdGU7CisKICAgICBpZiAobmVlZHNMYXlvdXQo
KSkKICAgICAgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOwogCkBAIC0xMDksNiArMTE3LDkgQEAg
dm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIHNldE92ZXJmbG93V2lkdGgoZG9jV2lkdGgo
KSk7CiAgICAgc2V0T3ZlcmZsb3dIZWlnaHQoZG9jSGVpZ2h0KCkpOwogCisgICAgQVNTRVJUKG1f
bGF5b3V0U3RhdGVEaXNhYmxlQ291bnQgPT0gMCk7CisgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGUg
PT0gJnN0YXRlKTsKKyAgICBtX2xheW91dFN0YXRlID0gMDsKICAgICBzZXROZWVkc0xheW91dChm
YWxzZSk7CiB9CiAKQEAgLTEzOSw3ICsxNTAsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50Qm94
RGVjb3JhdGlvbnMoUGFpCiB7CiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBlbmNsb3Nl
ZCBieSBhIHRyYW5zcGFyZW50IGxheWVyLiAgSWYgc28sIHdlIGNhbm5vdCBibGl0CiAgICAgLy8g
d2hlbiBzY3JvbGxpbmcsIGFuZCB3ZSBuZWVkIHRvIHVzZSBzbG93IHJlcGFpbnRzLgotICAgIEVs
ZW1lbnQqIGVsdCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCk7CisgICAg
RWxlbWVudCogZWx0ID0gZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCk7CiAgICAgaWYgKHZpZXco
KSAmJiBlbHQgJiYgZWx0LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IGVsdC0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAgICAgaWYgKGxheWVy
LT5pc1RyYW5zcGFyZW50KCkgfHwgbGF5ZXItPnRyYW5zcGFyZW50QW5jZXN0b3IoKSkKQEAgLTE3
Niw3ICsxODcsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvCiAK
ICAgICAvLyBXZSBhbHdheXMganVzdCBpbnZhbGlkYXRlIHRoZSByb290IHZpZXcsIHNpbmNlIHdl
IGNvdWxkIGJlIGFuIGlmcmFtZSB0aGF0IGlzIGNsaXBwZWQgb3V0CiAgICAgLy8gb3IgZXZlbiBp
bnZpc2libGUuCi0gICAgRWxlbWVudCogZWx0ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5vd25l
ckVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBlbHQgPSBkb2N1bWVudCgpLT5vd25lckVsZW1lbnQo
KTsKICAgICBpZiAoIWVsdCkKICAgICAgICAgbV9mcmFtZVZpZXctPnJlcGFpbnRSZWN0YW5nbGUo
dXIsIGltbWVkaWF0ZSk7CiAgICAgZWxzZSBpZiAoUmVuZGVyT2JqZWN0KiBvYmogPSBlbHQtPnJl
bmRlcmVyKCkpIHsKQEAgLTUyNCw0ICs1MzUsMTMgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRCZXN0
VHJ1bmNhdGVkQXQoaW50IAogICAgIH0KIH0KIAordm9pZCBSZW5kZXJWaWV3OjpwdXNoTGF5b3V0
U3RhdGUoUmVuZGVyT2JqZWN0KiByb290KQoreworICAgIEFTU0VSVCghbV9mcmFtZVZpZXctPm5l
ZWRzRnVsbFJlcGFpbnQoKSk7CisgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQg
PT0gMCk7CisgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGUgPT0gMCk7CisKKyAgICBtX2xheW91dFN0
YXRlID0gbmV3IChyZW5kZXJBcmVuYSgpKSBMYXlvdXRTdGF0ZShyb290KTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2aXNpb24gMjEx
ODIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDEyICsyNCwxMiBAQAogI2lmbmRlZiBSZW5kZXJWaWV3X2gKICNkZWZpbmUgUmVuZGVyVmll
d19oCiAKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgog
I2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RnJhbWVWaWV3OwotCiBjbGFzcyBSZW5kZXJWaWV3IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1
YmxpYzoKICAgICBSZW5kZXJWaWV3KE5vZGUqLCBGcmFtZVZpZXcqKTsKQEAgLTkzLDYgKzkzLDMy
IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBsYXlvdXREZWx0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5b3V0RGVsdGE7IH0KICAgICB2b2lkIGFkZExheW91dERlbHRhKGNvbnN0IEludFNp
emUmIGRlbHRhKSB7IG1fbGF5b3V0RGVsdGEgKz0gZGVsdGE7IH0KIAorICAgIHZvaWQgcHVzaExh
eW91dFN0YXRlKFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9mZnNldCkKKyAg
ICB7CisgICAgICAgIGlmIChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50IHx8IG1fZnJhbWVWaWV3
LT5uZWVkc0Z1bGxSZXBhaW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fbGF5
b3V0U3RhdGUgPSBuZXcgKHJlbmRlckFyZW5hKCkpIExheW91dFN0YXRlKG1fbGF5b3V0U3RhdGUs
IHJlbmRlcmVyLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgcHVzaExheW91dFN0YXRlKFJl
bmRlck9iamVjdCopOworCisgICAgdm9pZCBwb3BMYXlvdXRTdGF0ZSgpCisgICAgeworICAgICAg
ICBpZiAobV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCB8fCBtX2ZyYW1lVmlldy0+bmVlZHNGdWxs
UmVwYWludCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBMYXlvdXRTdGF0ZSogc3Rh
dGUgPSBtX2xheW91dFN0YXRlOworICAgICAgICBtX2xheW91dFN0YXRlID0gc3RhdGUtPm1fbmV4
dDsKKyAgICAgICAgc3RhdGUtPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7CisgICAgfQorCisgICAg
TGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRTdGF0ZURp
c2FibGVDb3VudCA/IDAgOiBtX2xheW91dFN0YXRlOyB9CisKKyAgICAvLyBTdXNwZW5kcyB0aGUg
TGF5b3V0U3RhdGUgb3B0aW1pemF0aW9uLiBVc2VkIHVuZGVyIHRyYW5zZm9ybXMgdGhhdCBjYW5u
b3QgYmUgcmVwcmVzZW50ZWQgYnkKKyAgICAvLyBMYXlvdXRTdGF0ZSAoY29tbW9uIGluIFNWRykg
YW5kIHdoZW4gbWFuaXB1bGF0aW5nIHRoZSByZW5kZXIgdHJlZSBkdXJpbmcgbGF5b3V0IGluIHdh
eXMKKyAgICAvLyB0aGF0IGNhbiB0cmlnZ2VyIHJlcGFpbnQgb2YgYSBub24tY2hpbGQgKGUuZy4g
d2hlbiBhIGxpc3QgaXRlbSBtb3ZlcyBpdHMgbGlzdCBtYXJrZXIgYXJvdW5kKS4KKyAgICB2b2lk
IGRpc2FibGVMYXlvdXRTdGF0ZSgpIHsgbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCsrOyB9Cisg
ICAgdm9pZCBlbmFibGVMYXlvdXRTdGF0ZSgpIHsgQVNTRVJUKG1fbGF5b3V0U3RhdGVEaXNhYmxl
Q291bnQgPiAwKTsgbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudC0tOyB9CisKIHByb3RlY3RlZDoK
ICAgICBGcmFtZVZpZXcqIG1fZnJhbWVWaWV3OwogCkBAIC0xMTcsNiArMTQzLDggQEAgcHJpdmF0
ZToKICAgICBpbnQgbV90cnVuY2F0b3JXaWR0aDsKICAgICBib29sIG1fZm9yY2VkUGFnZUJyZWFr
OwogICAgIEludFNpemUgbV9sYXlvdXREZWx0YTsKKyAgICBMYXlvdXRTdGF0ZSogbV9sYXlvdXRT
dGF0ZTsKKyAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2J1Z3pp
bGxhLTM1MDktZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF5QUFBQUpZQ0FZQUFBQ2Fkb0p3QUFBZ0FF
bEVRVlI0bk95OS9WZFRWOXI0L2NrNVNVZ0kKRUY0a3ZJa0lVcFNYMGxKdkxlT29WVWVuOWJHcjg2
MnJzL3J2ZlArZHJyblhkRTJmOXVsMDdPMTBySFdvSFVxbDhpSWlFREFCQW9TRQpFQktTbkpQbmh4
TWdoQ1FFQk5UZTEyY3RsK1NjZmZhKzlyV3Z2YysrOXRzeGZmcnBwMGtFUVJBRVFSQUVRUkNPQU9W
bEN5QUlnaUFJCmdpQUl3djhleEFFUkJFRVFCRUVRQk9ISUVBZEVFQVJCRUFSQkVJUWpReHdRUVJB
RVFSQUVRUkNPREhGQUJFRVFCRUVRQkVFNE1zUUIKRVFSQkVBUkJFQVRoeUJBSFJCQUVRUkFFUVJD
RUkwTWNFRUVRQkVFUUJFRVFqZ3h4UUFSQkVBUkJFQVJCT0RKZUxRZEUxNGhHSTBTaQpVZUxhMXVW
NCtnOEJMYWF6R2s3L2dIMlM4SXBPVE0vMWV5K1I2NFFqeWQzREhTaEpvaEdkU0xTd2RHTmhuV2k2
U2VoSm9sR2RXQ3pYCjgwbGlzV1NlKzBlSHJzV0l4V0xFNDNHMFZQbm84VGhIWStFNnNXaUVhRFNH
YmlSTVRNczBra0xDNUVhTFI0bEVJa1Npc1VQSmt4YmIKUzd3NnNXaVVhQ3hlVU9oWWVIVzdYZTND
L3RxbDdETEZZeWw5dnlKb3NUQ3I0ZGpMRm9QSWloOS9ZSVZJN0hWNEIyaEV3dEdES1VjdApTamlT
ejI0MXdpc3IrMnJqWDVXeVBVaU9OazhIV000dm5mM2IwYXZJNjlWZTdNNXZzYTZtWTg1L080Nzdw
LytoYnlLWTVaNkxwclphCm10ODRSVTJKMVFqYjkxZjYzTnRET1ZzdWNPTmNJNnk0K2Urdit6YXZu
MzMvTnEzbGx0U3ZHTE5qUTl3YkdETmlkam54K1lLNDJycHAKdEM0eVF3ZFhPNnNLazgxNW1yZWNU
M2cwblQxSFRXMDluSHJqSk5VbDF2eFozMFlTejFDYys0K3ozSEpCOTBtVjVpWVYyNUc0YzBtbQpm
MHp3MEF2WGIxdElqTWY1YnRDNGMvMjJoY1NUOU45V3FncVZTZGNaZVpoZzBBM09icFVQMnRWRGtU
NlRXQ0RCRDkvbytEWXUxSnU0CmRjRkNTVnJ5L3JFWWR3YTJQL2YrSjFac2dMYWE0TjVYT2o0WDRB
Tlh1OExGYmpPYmxwV0tmNzBKY0VPd1NlR2o4MmJzbVhyUnc0ejgKOEQyRDNwMjI3bXBxNDJUekd6
VFhsR3lHSFh2NFBRUHViUFZpSXg5bnVYMnBkVk1PWWdIR2gzNmxmOHk3UFZoYkM5NnhWYTdmdmtx
Vgplbmd5Nk5FbEhuMzNMV09id1YyNDhGRjc0emJ0bFlZeThvZEo0aGw2d1AzSGFmSzd1cmg1dVpN
eUZiVHdBcU0vMytXeEYzQTZJUmdFCm5IUmRPTStaeGtyVUxESzNYN3hGZDBQSlpuU3JuaUcrU3F0
azNaYy9wTDNPc2ZsN1pXYVFyeDlvM1BwekR5VUs2UEV3bnZGZmVUQjMKak50WDAzUU5SUDF1ZnJy
VHg0YTB6cVllTHAxcnc3SE5ydnE0TTVEZVlOWHovaWVYc09YVzZDYVIrU0crK001bmxGdGF3dnVU
U2NmLwo5QWUrQzUzazQ5NW1zcmRNR3A3QmU5d2Y4ZTI0VTkvU1Jlc2JwNmdyTDBUeVFvZ3ovZU9Y
UFBRNnVYNzdnMjM1TzByODQzM2NHWS9qCkNucnhBUmMvL0lRR3g5RzBTM3REWjM2c24rOEdKc0Ra
dzhjZnRPVW93MEtpQ2pQeThDR0RiaC9PN3V0ODBKNzUzdE9ZSC9tSjd3YmQKUUtwODl2VGVlVFhL
OW1BNXFqd2RZRG0vZEY3VWpsNDlYcC8yb2xCK2kzVjFPMnBYVjlmL3pYT2I4b1pXNnRSbEp1WkRB
SFJkK3hOWAp6NS9CdHZvekl4UHpURDBkcGZSa08rVldNK1hITzZnMkxUTGxDd1BRZmUwamZ2ZEdG
UXFnRkpYVDBWcU41OGtVUFRkdjArSk1hVE1lCllQRE9sL1JQTFVIVFdUNzY0REp2TkxmU2Rmb2s4
WW43L1B3c2hMUGhGRTFWOXF5eTFkdFdtWmcxT2pTdXJtdDhlT0VVeHhyYnFkQTkKVEMrdUd6SmYr
WWlyNzNaejNKbWsvNWRmbVh3NnlxcTFtcnFxa2dLbmdFeVV1VlJhYTNTZVRJS3JXK1gvdVdMbWRL
dENaVXpuUHdOSgpuZ1NTdERVcEhJVzU2M3FTcUVPaHFVNmwzS1ZRcmVwTXpjT3BkalBWTmVtL1Zl
eUZDbVF5VVZtZVpQaHBrcXA2aGFhamFJM2lHdmUrCjFHbTRZdWJkYmdWblVzY3pCV2FYaVpvUzAy
YVkvL3d6U1hXN2lkcHFFNVdWSmhwT20ya3NOMEZjNCtFWE91RXVsZjl6M2tKWEd6ei8KWHVlNUZV
UCtxTWFkcjNSS3o1dTU4cWFaMWphSTlPbjBoWk8wSDFlMmw3M0pTblZUS3pXbUJTWjlZYnF2ZmNU
bC8rcWt0Ykdhd1BqUApQSDd5bEVqcENScktpOEJrcGVwNEt6WHFBcFB6WWJxdmZNU1ZjMi9TM3RG
QlI4Y1ptbzZwakQ5T2NxYXJHaFdJcjh4dzUvLzlqc2tsCmhiTlhydkg3ZDgveVpsY1hiYzAxTFAz
N1o1WnhjcXE5Q2J2NXNHU0k4ZXo3LzQvSC9qWnUzcjdPMmU0T21tdE1URXg2TUx0T0d2SHQKR3Na
T21hdUoxbXFWSjFQenVMcXU4T0g1Wm9vVWlDMk44OWUvUDhBWGF1UEduNjV5N2t3YlhWM3QxRG1D
OVBYMU14d3BwYTJoSERVbApjNzBqd29Sbm1jWHBwemlPbjZiQ1poaXB0Y3hGKzhsU2hwK0d1UEtu
LzhQSmlxM1grNHI3Sjc3K3QyblQrZEJXWjNqd3IxOFpudmFDCm81NzI1c3F0dWhkYjROdXZ2c2ZS
M1V2UDZlTW9nZWZNemM4eGxxeWlvNllVRTBCOGlmLzhjNERxOW5acXE2dXByQ3lqNFhRbmplVkYK
dTl0dGRKNi9mdk1RT01hcDl1T2JkV3ovTXBWUjZtcW1KdlFqWDQ5YU9OMVVucVVkVVNpcmFhYmV1
c3pFWElqdWF4OXg1Yjg2T1ZudgpaSzcvWng0L2U0SmFmWXJxa24yK3BmUXdzNzRZcFNWV3dJU3VK
NGc2anROVVY0SEZ0TDhvWHdSdDFjMlgvM3JPdFZ0L29QT05LbFpECnhkU2VxQ3U4UGRzdjIvUlFL
Q1pLS2lxeExqNWh6dHhBUjNxNTd6VnVrNVhLY2l2RFQ2ZXBxcy8yM2xNb3FhNmpXbDFrYXQ1bXRC
dDcKMHNsTExOdDk2YllROXBHbnd5em5WNW5OZk50ZTBJNWVMVjVhZTNHb1pMSHJRNnRETDRlQ2Vw
bXFaZXVsWmxGVndJYXJwbW56MnV4QwphRE82b3FLdEJsTlZ0MCt3S0xaS1dsejFsTmczNG9zejJm
Y05JMEdBZXE2ZmJXWHphVXNKYlpjK290c0o0VHl5bFI0N3R2bTMyYkpoCmJTcU80dkl0bVMxbVFL
RzhzWnZyUFliYzdvSHYrSGxtZFplY2IwZE50V3htRlJSTVdHMEtqWjFtdWwyQVZ5ZFUyRXFQRjhS
RVZiT0YKU3owYm8vZ21paXpiN3hmdHN3K2kyazNVQXloSDgxYUtoNU9jdkdhbXJVYkJabGRvN2xa
eEFXdlJyVEQrU1EydjAwVDdHVFBkM1JaNgplaXkwTnlxYjk5ekFXeTJwY3JlcWRIU0RkMEJqSVFh
QjV4cEJvS25XdEhuL2piT0FXK2Y1YXZibFdKYVUvYXFxR1VXeFlDK3Y0NTNlCnN3Qk1UQytSWHNR
YmxVZTFtRUZSVVZVVlZiVlFWdGZHNWZQbFJrZFhDOUQvOVFPQ09MbHc2d2F0TldXYkx5MnJvNXB6
dDYvaklyeHQKV2RIQnk3REtvZy9BaXMxaVBPV29idWE5aXkxTUJBMG52YUF3Z0pveUx2T0drV2wr
ZnY2Mkg2am4rc2M5Vk5xMjZtQlY4em11ZGJsZwpvbzlIN3BYTk9KeFZGWnQvUC95bWo2VzBHV2JW
WGtvOVZUalMydGQ0WUp5dit5YTQvTkZibEtReXJKWTBjdW1EeTV5dlp3ZUJxY2VVCjk5Nmt0NzJK
bXJvbXp0MTRueGFBcFJDSlZCai81Q0JlWnpmdFp6cnA3dTZtcCtjYzdZMWxPeVBiUVpTeGYzK1g5
YzZMeWxUZC9oN3QKM2o3dWovdHpwcTRvaHQ1VjFReUtoWktxSm5wdkdMWXhPRGJIL3BxZ09EUDlY
L0xJdjFFUUNsWE5QVnpxYWQ0NVUzaEU2TEYxd0lGRgpBZXgxOUY3cXB2TFEzN21aZXRnRGlwV2lU
RjlobjNHcmRudXFIYzZsZkpVaXl5NkxGM0x5c3NyMkJYUzdLM3ZOMDJHVzg2dE1acjVmCnhJNWVM
VjVPZTNIWVpOcjFZZGFobDhPZXJVOUpOWXE2dHZXcWM1WVY1d2lkMmNremZtOHNOOVJXbnZOd1l6
MUNTd3NWT3pyT2RrNWYKdW96dWU5R1dja3VPcWxOdDFBKzQ4UUlURDBaNDQ1TnpsS3NRbUJtaTc4
RmpITzBYZUxlN01mL1Vhbm9IWFlOb2FsV0VDVURYR2V0UAo0Rm1GOGhZelBVMHcxcGZBRXdGenVV
SnZUMnA1VUZ4bjdKY0VBMHRBRU5xNkZGemxvTmdWWEdhZEJ3OTBFZzZqZ01KaEtIZEEwUWt6Cm5T
NVk4bW1NajBEbkh5eFU3dXBzSkFsNEVnemNUMkt1QjY4WGVtK1lhYXJNcmRQRW1zNzRZSUwrRVhD
Nm9MUEhRbU5aOG9YelZaZVIKcHFYY1RIUGE3OVU1SFI4bWJoNVBoZE4waGdhTVBIejF1V0Z2WFJk
VU9odFZJSWwvSG5DYUtFOTdJWlRWS0lET1lsQ25MblhOckc2VgpWM0dsY2QrM2xLU3BwREJIUzl1
MDllM3JTbFdMa2JDeXJhTVFaK3lmditCNjd4d1dZR1Y2RkRmZ2JIK0x4cElzd3pHV0tuNy80VVhZ
CnBSeGZSQVpVTzZVQVBPYno3K0hHdVROVTJsVHNkVzl5MDdrUlVRRmgwa2xWNHBYbnozQURycTQy
cXJKVW11cFRIYmdlKzVqb202R3IKcVJNN29DZDA2cnQ2cVZ2cm8zL0N5N2QzUi9qb2czWmo4RUZQ
Z3N0SjBXWjJZa3dPOUVQYlJlcDJycHZMdWgvRWNhS1hjN1kwbzFCTApjZFhEUkdMRHJnSU1EZmdB
SDE5OWJxeFg3THB3Zzg3R3lpeXhiV2RwNURzR3FpNXpvK1U1ZC9xaVdVTHNVeVlBN0xSZDZlSnYz
ejFpCjZjVFZyUHJjWXF0TlU4MFpkaFZmWWV5WGZpWldBWitQOHZiemRMVTNVMkxSQ1FlV21KMStS
cWk0Q1pmdTV2NkFteE8xTUQwSDhKQy8KRHpwby8wTW4xdkE4NHlPcmRQN2huTkhHNUlsemRXbVdt
ZWtaM0t1bGRKNkFCMzJQZ1hwNmI3eExVNjVlUU03NE5HWUc3L0VndGRTcwo3OTQvWWIyYzNoczls
RzltczdBMDljZ0NqL3Z1TXVJRFhFMzBkcitWbWxIUVdCZ2ZwSDk4RlVkUmdqQlY5RjdzSnZ6TFgz
a3dzYVdICk4yOWRvRTcxNTRqRHlNTkkvd01HQTBXNDhPRUxBbG1jVHdEUFQ1bHg5K0lJampOdzM1
MXFsNHZvdmZFN21pcTNsdEVsMWhZWkgveVYKL2hFdlRsY1RuVDN2MEZpZVhaKzU4N3FkV0NUQWtt
ODJyV3l6NjZKOFczdFVZQm5uTE5OcytiOUF3Mlo3R0dkbHdZZm4rUVJCNnducQpsRm42QnQyQWk1
N0w1MmlyS3dGMEFwNG5XZlcxUFU5bnNhN2tseldiTEFkVnp1bDZHSmp3QVU2YXV0cDVxNzNKNkVU
dXNXNjJuYjFBCjZacG4yN1d1eXgvU1hyNldWOTVzNmZ2N2QrWjdhNEdyaG1md0FSTnJGaXp4T0tV
dFBYUTJsTEF3TnNEb2ZBQkw1Um5PZGRidG5QRTUKcEhaaHArNXlsYjhsWjN0UkZzdFdKOHk3MkZw
eDFuTElyL05jZGFpUXVrWE81NHNUMit0cVpLL3QwMnZBbm52Mml6NHZudkZCK3ZvTgp6Nkh0L0hY
YThyOHBjeEplWHR6OHU3N0NrVlVZeFZGSFozTjVsanY3UlVucjYwVlRHNEhqTEU4OUpnaDRSOFlK
N3VKZ2VtYzFadWMxClBPNEVmWGNTakFGZEY4M0dpMXBSYUh0YnhlZUQxZlVrb05EV2E2WUI4QVky
dWcxSjNIMEpCbFlWUHY3QXlxMExKc1llNjl5L3J4T08KZ3g1UEVxNVMrRjJ2aFF2blZJcUM0UGJD
c1NvVGEzNGQ5MGdTYjdEQURkVVJuVy91SjZtNll1YlNKU3ZYdXFEdmprWWtSM0FMNEJ2UgptVlVW
ZW50TUJIM3c0SnM0ODdFWHoxY3U0bUdOc1o5aWZIVS9DZW1kWGRYRU83Zk1YTCtzMEo2YWNIdjhR
R053VmdjdHliSVhjSmkyCmU5RXBJMXBjVHFLbk9zbUxvUzFkbVZPQmpUemtrU2tlUTR0RldKb2Q1
NGR2alU1cTk1bUdySDdDNHV4elpqMGVQQjRQa3lPL01PQ0wKb21rQU9wR1FvV21ITFhOcGowNWtk
WVhWMVZYaXFNUlhWNGpFdCs4RVBCZ1pBT3ljdk5KdC9PbDl6SjIvL1RlRGt3dG9pbzJ5RXRzZQp3
dXhFVDIzRU51ZWFkck1VcFdZMS9heHQyb0JHUW5IU2V2YW1NUXNRSE9SZkE1NnRqdnU2dHRtOTFs
Zm5HZkJCOS9ITXRmQUcyV2JZCkxUYjc5dXQ2Qkw4WFhBMlZ4c0NDV3NvN3QyNXkvWEl2N1UyR3dU
MStjSWZCMlh4enJSRDNqL0h0WUJVZmR0ZGhqbWR6UGw1QXBoUzIKeWxwYytIanFXU0VmaXBLS0xi
N0srS09IQURTZHFNS2lCZmpwcjE4elFDdC91SHFWUDl5OFFHRGtJVi85ZFlDVmVBeS9aNVQrRVRk
agovZmNZQzZvNGdhU3JCeWZnNm5xTEt4K2ZvM1RkajN0a0VHOHdsY2Q4Y1dxZ3g4SzR4OXdFdlk5
NTRDdmkydVd6dVBEUzkyZzYrNHhNCjN2aFVHcm91Y3FYTEJkVFRjLzczL09GYUYyVVpTdDAxemRn
Qy8vcmlMcmJ1ai9qMHp4L1NZM2JUOSswWHVGYzE5TENYdS8xanZIbmwKRXBldW5xZmVGeVFPdU5v
dnB1bmhYV3F0L3B4eG9LOHk4TmV2R1N6cTVQWUhWM252dlN0R256UkJWbmJFclM3eXpmMUJxcTVj
NGRLbApEN2pXdFU3Zm5XZWI3YkxSRHZjenF4Nm50NmVOb00vTmcyOStZRDZiMmVYSmE0YldXUE12
Yml2YlhMcklaRmQ5NzJJak8vSy9iVEFtClNTVG9ZM0RNaS90eEg3TTBjUGxDTjA1OEROejdDdmVL
QnBINUhQcktrcWRkWkQzTWNrWmZZZUN2WHpQdjdPTFBuMzdLclFzMXVCLzMKOFdobUpiK09jdFRO
NWJueEhkZENxNzQ4OHVaT1AzOFpxRFNjNlFDM0c3ZTNrcGJVM3J6cWs4Y0plK0dOTjdJNEh3ZmRM
dVRUWGM3eQp6OUZlYUxucVJDSy9yUVdpV2NzaG44NXoxYUdDNjFiV2NEdnRlazkyKzVxdzk2bUY2
Q29yb1RVMjlxbXVCcGJKZTFoSHdXenZmT202CnZ1UGZnYUNXVXBNMmVtR01nYXNVVjdxTUMwNFh4
YnZOQzNtVExNenJURXpvYk93Qnpwd3QzejVBWW1KanB0TllFcE5rMWd2T1doTlcKb0tSZXBSNm9Q
MnVtdFVaQmRhaWM3MUN4V1V6NEp6VjhRTk41TTQwbEpzb2J6SFNjM2tOK1RlQUNuQTRUa0V5VmVE
S3RNN2lkT01ZZQpsMHVkWnByYUxMeC8zdERRMkhQOWhmT1ZuU1FyL2lTV1k2bmxYOEVrWHo5SXBD
cXFDVWVKUWxXZG1lNWVLN2N1R3JLTWpPcHMrb2c1ClhnUUpvTlJscERuNFU0SkFMSWtXMDVrWU52
SlJXNVYvOXVQeGQxL3kzNTkvd2JmMyt2SFZkM1Bqdzl1MFYyY2ZXWWdFL2ZnREFRS0IKQUl1TFMx
djZJRUZ3eVJpWmNaWm1PQ0Q2T243dkZQZS8rb292di95Q0wrOC9ZVFd4M1NrNkdCa01IRFh0M0w1
MWhaYVVnemZ5OEM3LwovZjBZWVgxdllYSmhVWE9VcnhZbmtQcHptOFoxRFpReTNybDFBWURnMkgx
K2RxK1F1WUJiaTYybjR0Ly9ZdDRWOTJQR2FLR25lV09HClE4VlJVa1pWWFJQZHZSOXc2MklYQUNP
anMrUWNlOUFDOU4wWm9QZldXUnlBdnVFRzduTnlkcWRNS1JURG9ZN0VjL1Z3RFBxL3VjUGYKLy80
Wm4vMzFLd2E4MEhiMkNtZWJ5bGg1UHNvRVRxNjgyWWdGc0pRMWN2RkNHekRHOFBNWWpaMjluSFVC
cmg0dW5qdkhCNTk4UW0rYgpDd2RnTGlyQ1pyVlIyZEJLeCttdEpiWjU0NXhlcGF5dTJiQVpWdzhm
bjJ1bHVxNkZscVpzVWhjUzN3cUtZcUdveUdoWUxGWXJGcXNsClE4M0tybWt1UFh1TUR4ZVdhQURQ
L0FvYkp3dU16QVRRNG9aTitlYjlnSU16MTAraUpzRmlkNlRwd1VvZ1R4emgyYWVNNGVKNmw1RUgK
eFg2TTQzbEd4VFBqVmszbVZMdHNCWFJRSElCdnMxMDIydUZyWE9wc3BxbXRoL2ZQdHdBK3hwNEhk
c1NkTDYvYlVTalBLTnRjdXNoOApiamQ5NzFhbU8vSy9MWDRyTmEyZGREdUJ0c3YwdGpkUzE5ak9s
ZFNBeVBSY0VITHFLek5QdTh0Nm1PVzg2aGxtakRiZWFhdEdBVXBxCm0ybDN1VGhXWXQxWDNieHk4
ZUtPYTZjU1V6bmx6WmQrL2pJQXJGVjA5dFFEajVsS3JZc05MMHdSYkR1VGRUYjJvTnVGZkxMbkxu
K3kKdGhmTE9jdDBMYit0K2FKWnl5R2Z6blBWb2NMcVZxNXdPK3ZxWHV6MmRXSFBTN0NPbldpanRW
eWwrWGdsZjdzN2dIZXNIKytxeXUxTAp6YnV0SWlHakMySjBRbElrMXJkNnhLc3pnM3oxWUNUaldS
Y1hibDNPdm94bEwrZ1JRbWtIK1JqMm9GRFRlWlhiYjhSUXNsWE1ET3JQCm11bHVOVjZKV2tSajhG
OGFnL2NTeEMrYjZhNVROanNsK2JzUUVGeE1FZ2NzcWpId3Y2U25wTEVwVkFMYVNvSzdnNERUeEZ2
Tlc2OWcKZlM4T3JrM2w2cWNLQVkvR1A3L2FPbTBxWC9mYm5GYVE1WFVLVGpSamFjd0w1aXM3SnFv
YXpWUUJ6U2QwaHU0bGVPelZXWW16NDlTSAprZ1lMMTdwajNCM1VDZWtLUmJERGdqZTBWRlZxd2xL
dWNxTTN6cDIrSk45OHZ0M2pzcW41SFpDejczK0VjN2FQdTRNK3NOZ29jZVMyCjdzWXozYlJ1cmc5
cHdmelp2MUtqK1ZZcVhDN3crUWlHMWlIdFJDY1VPdzF0M1pSYTF2ajZvWnV6dmU5UW5iRmo3bUJr
Mk1KU1VzTzUKRDI1emN2SXhkeCtPZ1hlQUwvdnQvUGxjNDZiZUNnbVRqcDV5RmVPNWp1cFZMWlFE
UVhZdXlBUmozOFJIVjdyNDRydkhUUFI5VFlYMQpBcGEwazB1VTFQSWlQZXZUdTZPdHVQbjZvWnZM
SC8wNXk5UzNRVWxESjllNmZkd2RuQ1VVYjZVNDRPYnA3Q3FHejZOUlZIa0N5K2czCmVGc3VjTTRh
SXhKTkVsNExBRVdFUTJHS2kyM1lySVczUzRYSXRCdGRGODl6c3R4S0VwVWl1OTFZKzR6T1lqQUFP
TENraVdOM0dqUEkKOFpSVG81cUJqYVZmcW9xU0tydEVXaEZ1TGJIVkNSY1FwOFZoeEduVUtnWG5z
WG9ZenlaNVlmRVZRdTQwNDZ3cytxQytIVVdQa1VoQQpVZTBGTHRhQzRuQmdjWmhvQXNiNjdqQTIw
c1RGM25kb3NBTGI5SkF2am1KVzNHTkFTMHJ2UnI3eWs2RmpXelZYUC8yRWdHZWNmMzQxCmtHcVht
N2ExeStZMEJaWFhIY2ZKQk93WWlNdWYxNnlTcEMyZnRqZ3FzK3NpQzduMVhYaVpKbktxeVlTbENG
eU9yWUVhMjdFNjZoazAKM2plNzZDczlUL2xsTmVUZGt1VWd5MWxqZWM0TnpwNnRXVTFMT2QxWHJ3
STZzNTU5MUUzMGpHczZxem5sdGJQOExGZjZnTGFXbHUvcwpWSjVvd3pYZ1pYQjRsdE9YR3BuOWRZ
S2UzcmV6aER6b2RpR2Y3Z0JzdTlhWExYYXJFN3ZZR3BubGtFL25lZG9UVTJGMUsxOGQzRzdYCmhk
cHQ5bnIvS3JMbjhUczkxZnUxVmJyWTlNMjh6MW1KYjl4UFYxaW13N0ZPMEpmWVROUlJWYk41eStj
TGJVNVBsVFIyOCtrbk43YmkKcDUxYmY3NzY0czRIZ0xiTzFzR2xsYWtOdHdhV0Fwd1B3T2lNcDFE
dEtxZFNNeEpMb1FJN1NhckNHejJBVjZkL0xNSENqTVlJME5hUQpYaHc2b3c4TWcrdTlhR2JmcS9w
MG5hRy94L25tZnBLem4xaTVlWDczUjdZMVVCWVQ1ZXp1ZEFBRjVpdi84NDBuZHdtaUFwaXdLQ1pL
CjZ3RnZjdHVvZFN5MXRNcFdaTmhlWlpPRlA5KzI4UEhIRmo2OWJhWU53S1hRVUo3ZkFkRjFLOVh0
dmNaSWlmc2hQd3pONXdtYjN0VzMKMC9tbmExUmJkR0l4YlhORHVkY2Z5cm8zWU9OUlBZdFhlVkF5
UkpmY3pBUTJhcGVGNnVZZS9uVGQyTGpNeENKck9nV0Z5VWFSM1ppcQpENGNpV1YvTmVqU0VHOEJW
UTJtT3pyYTlwcFByUGNhd1l2KzlCN2k5V3kxSE5yMFVUSHlKZTEvMzBYUGo0eXo3UjdaajJKVU5p
d0phCk5Jalg2OFBuOCtHYjhiSWNEaGhyYkNjZThMZlAvOFlYZi91Qyt5TkJ3TWVEYjc3a2IwLzNN
T0pVb0V5N2pRd1ZPVXB4T0Vvb2NkalQKT2tkSkVwclJ1bWxwVFpIcXFLQ0pBdXZ3RHZZYlo2NDdo
eUZqbGpRdEFLVTBOamJSMU5SRVUyTWpEWTJOMUZYYXdGTEorVC9kb0tzZQpDTHE1LzgzbmpDeGtX
ZHVVTXc2VlVBQkEyLyszSVBSVmh2NyszM3h6UDhyWlR6N2w1dmtteUZpZ3NiMGR0dWR1aC9QbGRU
Y0sxVVZXCk5xUTV2RExkYkRJSzBGZGhzdVpLNUNES1dUZmE4MkE4UzJvSHFLT2M4bHJ5cEY4Z3Rt
ck90RHZCTzRGbndjTk1zSjNHcktNa0I5MHUKNU5NZGV5Ly9mZFNKdkdOQisybFBDbTVuOWxrSFg2
VGV2eUxzMlFGUnRyb0dhY1Z2WTJNRmhyMTBheEcvcG1WMHlCTmhKakJ2aGxYTAo2b3pPRllCdmNm
c3BVcXB6YTZsVWZYSGFwdFQ5WkdDcnN4bjJUVytldzk5MTdkVG1KcXdWenhCLy8rd3p2aC95N1Br
a21VVG1BeHV0ClZaN1RwQ3JxRGNrckxiQ3FLM3g0MjBxRFl5dDhZRExCNHlEVTk2aXB6ZEpKWmll
MVBjdTJPcVB4T0FnWFA3SVk2NmczK25ONUZHZE8KdnhkTDRnYktIYVlEeWRldWFBQW1jZzMySnpX
ZzNvUkROVkZSQjVCa0pXMUR5M3JLQ2F4SzIyQ3VXRXhZclNabVI0ejlPajNkYWdIbgp0MnVBbmZZ
clYzQUJ2c2ZmTWVqSnZrZEF5ZENIMVdZbE92dUl6MGY5bERlOVlTd3RjL2N4bWVYMENpV3Z4M3N3
TWlpczhXRGcrVFlICnlGWnhMTFdjTGtFaVNVRmh0aWRvL09lb08wVUxFQndiMjNhYTFRWUx6NHpo
cnJhMmhrMmRhL0g0RGh1cWFudVg4eHNqRHZYSzVueEgKUVFkYlordXQ2MkdHL3VkYmFxLzlpYmJO
RFk5aHhrZXkxKytrdGc3MUxoeXFNUUR5d1FkWHVYcjFLbGMvK0lCenJTZDQ3OVpOYnQ0MAovdDM2
OEJhOWJVN0FTZS8xbTN4NEtzdnBXZnVXeWRpanRyOE9oRXBwYVJQZ1pYbDFLMFk5R3NZTm1KWHRB
eHlaUldyT2V1clNYdUpNCm4rWEs1VUx0TGI1QzJKbG02b2h0NzBObVZ0SktPN2JBOS84Y1k4MC96
bmk0bE01TG4zTHJzckgvWlhCcVlkUDJEUm55eFRHRm84b0oKdUZrT1p6U282L203cWh2NVc1MFpT
YlhMM2FsMk9iNHRHaU5zMm9PeFNLb2R6dHhMbGordnU1MlhFOTlGRjluWXFlL0N5M1QzOGsyNwp2
NWxuYTBINktreldMUTYrbkZWc3hVN2dNVlB6V3k4bFBlemgrNzduT0Y2Z2JtNWR5eWZ2Qk9hYzZi
c3o3RHNYQ2pVdG5ZQ1BCM2NmCndQa1RPUVkvRDc1ZHlLMDdOOEU5bFgraGRTSzdyVzFSaU01enR5
ZnJCZGF0dmRiQjNlMTI5M3IvcWxCUWE2L0Z0eks0dGg0RE5CWW0KeHpZNzhpMjliMnllVUZKVVhy
MjVqM2p3N3M4c1JGTVZOUlpnOFBQdmNIWjNwSjFtWXVQMGU1Y3hkbCs0dWRNL3VhVTRQY1RpUmdM
aAozQXN3Z290Ykc5a1RtN3R1ZFNKclcwWWNqU2NBallCbmhDL3ZHeDg3Yk90OW44N3FEVTh4eHR5
dnFVM29qOGNJNU9qbEorUEpWRHFnCmtVU0xKd25NSm5pWStraGVTKzJHWjJYQ0J2ajZOZVpYZE9i
SDRzWnBYK3RKL0t0SlFPZnhWenF1ZGdWbmlZbGlHNnl0YUt5bXZnU3UKUnpUNkhnS1llS2ZOVUZa
OFZlUGVrd3c5YkpTZW52dDNJalZiNC9Wb3JQZ1Q5UGNidC94ekdpdVpYeDdYalk2UE41Uk1SWkhF
ODFRRApUSnhwVUY0NFg1bG9xeG9EZlhFbUYzUjBRQXRyUE9pSG5odG1iTUNLTzg1bm44V1lYRENr
aWZvVGZEc0lGM3BVVktEOGhMSEg1TkZFCnF0dzFuZEYrNDBPSzI5ZXNKcGtkaVhGdkJOcDZ6YlRs
MmY4UlQ5bTZ0ckdreUZiRDcxTHJRMGZ1Zjhsa1lLdHFiOHoycllVamFMcUcKcG1uRVkxRUM4K044
ZDIrTXJycFNzRlJ4TGpXVDBIL25jOFptVjdZYUZpMUtNR0NNbnFjM05nY3RnMm9wQnQ5REhveHM3
WEdJQnBhTgordHQybkRLVmdzTEFWbHVRV0U5SnJKVHgxbzJ6Z0krN2R3ZnhiOVIzTkpZbUIvaHV4
QWN0dlhRMmJFMExoeGE5K0JZelo0U3NOSisvCmFjeFFKYmFHRE5TeUtsb0F6MktJbmFRTTNydWMw
ZUJHbWZ6aFN4NEhRVitlWm1ob2lLR2hJZnIrL2lYTEpVNGk3Z0UrKyt4N0poZU0KWTdpai9rbStI
UXh5b2VkNERuZEh3VjVTUmxtWjhhL0VVWUt6M0FFNEtDMHZ3NUUramJwUG1UWmkwQ0pCM0VCRFZR
bloyQ3J2N0srWQo4b1ltbk1EQW83SE40OHRYRjcyQWk0NFQ1WUJHTkFINGRqWnkzc1ZGQWdFUFl6
TnBHK0NWUXVJRUxlVXhHZnJUQ0M1NklSaGk2d0RuCnZjZ0l4dkNlbDBpZU4ybnVORlhxM2pEcVM5
L1gvOFBJekR3THM1UDg4L083T0R0T1lFRm5ZTkJORENpcGE2WFZDUlRiTnN2ZTBNTWMKYTJXbmM4
YmhPdDRLd01PdmYySitOVXAweGNlVUZ3ak84M3cra0hPZ2FFUEh6eGFORVU2dlo1WVYvd3o5L1Y0
Z2dYOXVucFdJbG1xSApOMllWNDNpZTNnTzZPTE5SanpiYitQeDV6WCthb3hGUlBsMFVwdTlDeXpT
SGpXMWdCdC9FTk1ZZTJoanV4L2VBTnQ2b0t5R1JtZ25OCnFxOW9tak93Y2RCZEFmWjQ4T1dzVUhu
Q0NELzQzUmNNak0vZ2NZL3dseS92YzZMck9KWDdxcHVaMS9LVmR4T3VQT2x2dCs5VUdXVDIKSFFD
bHBEWTFHT1RrVEczdW84a1B0bDNJcjd2a3J1V2YzbDRVVUNmeTJOcmVkSjY3UFZFS3Jsc0ZoRXNy
bjBMczluVTVnWGlYRHhIRwpjZjkwaDN1alc1MzhSZmNZUTBQRFRNNEdxVy9wb3VlL2VqbGRWN3A1
MzJRcDVjUnhKeXZQWmdnUlpQTEpzUEd5SFgyRzBuV1I5enBxCnRpbldaQ21sK2ZRSmJOb2FzeE9q
akE0dG81dUNqSDNYeCtBeGx2MEFBQ0FBU1VSQlZEVGdkRFhSMWRWTWRlWW0zZzNaaHJlV3BZVG4K
SnhsYVNHSlovQmMvUHQwYUtWNmNlc0xRMEREUHB1ZHBhdXZoM084dTBGS2R2azdPUkd6TmczdHhI
VGhCUjFjTjFtMTkxQ1N6UTNHKworWEVqblNURFF6ckRJenJQM0VtcVdrejBuTGR3M0psNnlHU2kx
S2t6UHBOa2FseG5yY3pFc1NXZzFrUkprWW5LTWhPaDV6cmp6NU5NClRTYVpta295T1pIazZSTWR4
d21GeU5NRVQ0MTl4QVFXTko0ODBmamwxeVQxSFNxT0pZMy8vQXpyd05LaVRpS3M4MFBxeStmWmZo
OXIKVkloUEpwbWVUVEsrQ205Mm1uanVnZGxwYU83SStGQ2hhc0ttNnJpSGt3d1BhUXdONlV3N0ZH
NytJZlZsOGhmTVYwWFI5bzUvTXFiegovVTlKUEpNNncwTWFuZ0M4ZGRuQ3lkVHlxRVJZWjJ3YVBK
TTZRME1hVDViZ3lnMEw5UnV6RzZyQzhaTXcvNE5HMzNPTjV3TTZ5WGFGClMxMW16SUFlMVhuMkpN
R2RmMnE0a3lZdVhqVFRWcHZENTliRGpQMTRsMytQR2JZK1AvbUVaVk1WeDEybFdFdXFxVkdYbVp3
UDRYazIKU3J5c210RElmWDVJMVl2RjZYR0doNGNaSGg1bVpQUUp6NlptV2FlZTdyZFBVYXlDdWJp
UzlsUDFGTVZYR2ZqbEVjT3B6dWZROEJObQpFbFYwdlhXTzF2b3kxRU9Td1ZHa3N6dzhBYXFibi9x
R2VENDB4S01KRDY2MjgxeDlxNUVpRXlqbTNjSm9lSVorNE02UHhveEcyRGZKCjBJS0pFeWRjRkRz
cWFXK3VJYm4wRXovK1o1am5Dd3YwUC95SkNjOFNYYjNYdWR4UlozU3dOL0wzTkFpaDV3eW5udCtj
M1RRVlVkTmMKZ1djaVFuT3I4UkZIVEVVNGJNc00vaHpoWkVmZFpyM1VJd3Y4MHZjVGc5NHdzRXhn
T1k2dHlrV3BWU0V3K1IvdWpRWnhBak56YzhaUwpLcCtQNEhvVC8zV3VCVXRranJIcEtUeVRUeGth
R3VMSmtvTXJOOTZqdnFUd0xYR3hGUi9qejAyY09yUDFJY0lYa1drampzRFVBQk56Cnpady9WNWV4
SkVERE0vZ0QzLzNxVFpYM0dNdDZCY2RyeXJhUEltMjB2NFA5OUE4dEU0OU04T092TVM3ZXZFaU5M
Y0xJL1hzTXpxMEQKUHZ3Ukc3VjFsVmpVSW15bVJhYWVqdlBzV1p3YVo0REhqMlpZSjhUU1lvVFMr
bFk2bXN1engxa01zMFAvcG04eUJPRlpvdFlLbE9VSgpmaGhaQXBZSTZoV2MySXVNeFRBLzlvai8v
RHpCT2pBOXRvQzF5a1ZWYWZvclZkczF6ZWJtazlRN0VreDR2TXpQVERIcDl0Qjg0WDNlCnJDOUJY
MTltWkxDZjBZVUk4Zm5IUEk0MmNhM25KQTZyUFUwUENkcDczNkhWcVdXTlE3VlhjdHlwODJ4bW5L
bW5UM2d5N2lZTU9KdnEKY0RwS0tIYzZNam9RUmR2aTdueW5oZmpFTk5PemJzWlhuYnpaV2NWemo1
dlphWVhtcnBOVVdOZHdELy9LOE5CemhvWitZZHJSdzgwLwp0Rk9pYXN5UDlmTS9BOU5BaUtYRk9P
Vk5aMmd0enk3bmRveG4vL1B6OUZiWlZ0aVpIdjU1cHk0c3lyYm5kaTNqNC9XY3pGbW02bzc4Cm4r
azVSY20yTkhTQzB5TjRGaGQ1T2p6RTBOQW96NWRidVBaUkR4VldFMWFyU21ETW5VVmZKcHhGc3d6
K3NwR25OZUlCTjc5TTU1RzEKcmhyN0laV3phcXZrWkpXS3p6MlBkM2FHNmVkUnpsNTduNVlLNjk3
clpxMlY4UjkyMWxlYm80cTZITGFkTjMxbFp6My9ZWEJtMDQ1SwpYUzVLckFxZzRpZ3lNZXAzY2Jh
OUt2Y2M5QzcxZUsvdFFqN1o4NWYvQW9PL2JHOHZYSzdhbkRyS2Eydm1jTlkyTXAvT2M3VW5OajJZ
CnZaMnhiTytEWkgrK2tkWEpuN2ZYMVpvbXFxeExCZG50NjRMcDAwOC8zZC91emwzUmlVVWlST01h
dXE1aktTN0ZzY3RHVFMwZUpSS0oKa2REQmJMRmd0VnF4V3ZJL2M1RHlSaVBycUVYcGE2cGZNRVl0
U1VJSHE4V0VyaVZSVWh1ZnRiREd2UzgxT2o2MFVHbEpra2dOQmE5NgpFdlN2cTN6UWVkQjVUaEtQ
Z3lWMXdsQzZMTmtGVHhMWGpHbFRhNWJQeWg1b3ZsSnBvWUFsaTB5NmxvckhsRjJXamZ6RlltQXli
ZVVSClFJL3BMSytDbzlTRTdXVjh6amtMdWhZakZ0TklZa0kxVzQ3SXZqVmljUk5XaTRJV2p4RlBh
S0JhTXpaT0Z4Sm1kK0t4S0FrdENaaXcKMnJPUHBPNkdIdGRRMHZXaXJ6THdsNjlJWExqRnVjYURh
VngxTFc3SWFWS1BzSTNaaGVnOGYvL2JkN1RlK0pqV0YvNktsa1kwRWlXaApLOWdkOWdMS1FTY2Uw
MUIzbkRqMUluRWV0SXg3UjQvSGlHazZxdFcybzEwM2JBQ3MxblJYYjZjZThzV0JGaWVtZ2RscVFk
SDFQQjhQCnpCYTNsbXFYVXdjdGFCcEsrbWx2dWtaYzAwaFNtSTNtbFhPM1o3UHFZai9rSzlOOE5o
Wm4vSjkvWmFieGZhNjJsaEtMNllaT00rTE8KcTY4OWNaamxET2dhc1lTR2FyYXk4NERBZzdIN3ZQ
TG1UTCtRZWc2ekE1L3gzUFVoNXhvSzJkQjh3UFU0cCt4N0wvL3NPaXJFMXZZUwozNGJZMmV0UW9Y
V3JzSEI3dE50WG5FTjBRSDViZlBiWjY3S3FUaWlVVHo5OVhTWXFCVDB5eXorK3VNZWJ0ejVKKzRE
WmI0aDRnSi8rCitnMWN1TW01Z3I3SUxnaS9KV0tNL2YxekJ1b3Y4MmwzM2U3QmhRTW50akxMOUpL
TzB4Ym03ajAvTi8vY1M5bHIxcUV0RExHMVY0VTkKSDhQN3Y1V0Q3S3lHWitOOGVXL0w3M05pSEZQ
YTFxdnlWcE82MzA4THZIUitxL2tTWGo2S3ZZNC8vdWthajM0YXBmUkM1NDRQMDczZQphTXlPakZK
eDdTTmFjM3puUlJCK3UyaXN6RDVqSUFnRXg1bHBLS1cycXFTQVkvMkZnMlJ0YnBUK0FlT0EyL2JM
SC81R25RK3h0VmNKCm1RRjVTV2hSSGYreWNZU3N0Y2lFczF6QitodW84TC9WZkFtQ0lBaUhnQjVs
M3JOQXdteEdRU2NXVTZocHJNTW03NDBqUll1dTRGc0sKb2RqTHFhbDhmYjRsc1NmRTFsNHB4QUVS
QkVFUUJFRVFCT0hJRUw5UEVBUkJFQVJCRUlRalF4d1FRUkFFUVJBRVFSQ09ESEZBQkVFUQpCRUVR
QkVFNE1zUUJFUVJCRUFSQkVBVGh5QkFIUkJBRVFSQUVRUkNFSTBNY0VFRVFCRUVRQkVFUWpneHhR
QVJCRUFSQkVBUkJPRExFCkFSRUVRUkFFUVJBRTRjZ1FCMFFRQkVFUUJFRVFoQ05ESEJCQkVBUkJF
QVJCRUk0TWNVQUVRUkFFUVJBRVFUZ3l4QUVSQkVFUUJFRVEKQk9ISUVBZEVFQVJCRUFSQkVJUWpR
eHdRUVJBRVFSQUVRUkNPREhGQUJFRVFCRUVRQkVFNE1zeTdCUmpYeDQ5Q0RrRVFCRUVRQkVFUQpm
Z08wS3ExNTc4c01pQ0FJZ2lBSWdpQUlSNFk0SUlJZ0NJSWdDSUlnSEJuaWdBaUNJQWlDSUFpQ2NH
U0lBeUlJZ2lBSWdpQUl3cEh4CmFqa2dTWTNZNmpycmF6RVNDZU5TZkMzeFVrWFMxN1hkQXhVaTkx
SG1UZE9JcitzSEZGZUNXQ1JmWEVsaUsxRzA1TUVrOTl2ZzZIU1MKak1WWVgwdTMwY3kwWDBDV2c3
U2pRMlNuRGdSQkVBUkJlSlhaOVJTc0xYU1dmaHhnYW5xM2NIYWFiN2JCa3pFbUp5STc3c0hXdGNx
ego3VFMzRkFNUVgxcmk2ZDBwSXBSeTdBUXNUb2V3VjBNazFzRGJmM1FSS0RqdGRpcExUTnZrOXY4
NHdHVFdaKzJVdHppcFBGbE5SWlYxCjUrMWtsTWt2aG5CY2Y1dmFDalZyaXZubHJrVXRNRXgrQ3RO
OTVUdXRPQmJubVprT1llOCtROGRweDY0eDV5UVpZKzdoRko2Y2NTVUoKUFpsaWJOQVAyRG56Y1Fl
T1BWalRiNU9qMW9tTy82ZGZtZkxhT2ZOeE8vcXo5TFF6Zis5QmxtUU0zOE9wZzdHalF5ZGRCMktE
Z2lBSQpndkE2c0xmWGRRTGdHRys4ZjV3eVc1Um5meHNsQUpTL2ZZWlRyVFpXM1Y2ZS9PUWpFVGZo
T3R0QlVja3pSZ2NEQUxoKzEwbmpjUnNrCmRkYjlBWjdmblNTK01XZ1pXelU2NkNlYTZYbTNFZ1Zv
ZW5zVjl4ZFBpRlNiTWUwcGJSMjJkZWtWS3Q4OWk2VjBqTEdoRUFBTlY5K2kKdGtySDkrQlhaaVlp
QkNibXFIK3ZtenFYWlZ0MjQvTkxCSURBV0pDYWR5c3hrVUVoY2hjU3BnQ1NFYWc4MjhieDR3N00y
aG9UWHo0aAo0R3pnelQvVW9LNUhXSGc0d29wdXdkVmRSMkE2aEtvVUduTU9URlpxT212d1RJY295
aHFYaWRMVEoya2p6dGlnV25BK1hockpHQ3NMClNjcGNSWWVZeUZIclJNSFc0S0xjVVl4Vk5XSFps
dllMeUdLeUhwd2RIVHJwT2lqd2tTT3hCVUVRQkVFUWNyR25KVmh4THpUKzhRUmwKWlNxb3ByU0hU
V0JTS1RsWlR6MmdwVlp0S0phdEVQYlMxQXhEUElGU1hzbkpTeTVDVVNOZ0lyQ2FtaGRKc3JsU3BL
aUVFMzlzaElVRQp5WDJrdlRPalc4dWRGRlVCazVWakhZMmIxN3pldFl3bk5KWkg1NHcvcCtkWXli
eGRvTnlGaE5tZEpMcTlub2FXVWl4V0JaTlZNZkx2Ck1HTldUYWpGeGRTK2N4S0xuZ1NyaWdwbzZv
dDNIRTEyQytVQU9lTXlZYllVMnV0N21lZ3MvL3dyejVlUFlwbk8wZXJFY2JLUlUyOVgKWVRGbFMv
c0ZaRGxBT3pwc3R1dGdONDdTRmdSQkVBUkJ5TVllWmtBVXFxNjNZeXJMOTVaWHFmNWpPM3JKems2
UG5uSU13dVBqQkZ5bgphYWl0bzkxdVhOdnNtazlQOGN0MGdLWkw5VlRXMmxHY0xqcXZyNk84WU5v
QWlpMTkrWmVSbmtuZENtdlBDSjljQ1RLenNQRXJnbWNxCmhMT2pkSHVZWGVXR1JBRmhBQ0xQWjVu
OHQ1ZWlNeTJjZkxNaVkxbVdpdXZkdWp4NUI4cXFhQzREdEpTbkZJMncvR1NPaVVFL1VFN3IKKzgw
NHkxS3BSVmJ4L1BpRXVRV2d1cExtTjQ5VFdXWEpFVEZvNFRDTHYzcHhqd2F3VjFkUzEzT0NDbWVH
bnBNeGZQMHpCRUxyMkZ0YQphRHloNHZ0eGtrQUUxUEpxbXQrdU1QSmFZTnF4NENvcjB3dEVIRldV
YVV1TS8rS24vdEtiMURsanVaOVBSUEU5bW1abUlnVFlxZXlzCjVYaDdKV3MvRHpBeEFUREY4R0FS
RFRlYnNhNzRtUG5CajFvUEFhK1o1dXN0VkZhWVdWOEtzanpqeHgrMlVkY0lFejk2Z1hLYXI1K2sK
Y21NWjNrWTZTd2tJZ3F2VFJWbTVpc2xlUWxsRkZqMFdsT2Nrd1Y4bjhDeHBtTEZRMDFOTGZIUUdY
d1RNTVNqdE9rbGRQZmgrbkdGeApHaHB1dGxDaVJna3ZCRmtZWGFmdVdoUEYrMWwrbEVObm05TGxz
YU9JZCs3d2RGaWduV2lSeURZZHFNSDhhUWY3TTIyaEJhZHRIZCtqCmFSWkR3RUlJKzVtVDFMZFhV
WlJEbjdueXZaTWtxeFBQbVI2UFVXVFZXTWRCODhVRzdHWWdzYzdpSXpmdWlRUjJKOWhkcGFBVmMr
S2QKVXBaKzNyMGU1WkpoWC9WR0VBUkJFSTZZUGMyQVdDcUtNZTh5eW1oMlpsOEtvYTJ2RTVuek1U
b1V3UmlVTlZQc05GN2FsdExpdEpBQgozTjhQTS9DWE1YemVDTGFLSWt3dm1IWW1pcUlBT2dIMzB1
WTFaMjN4dGpBclQrZHcvYTZWV3FmeE96TGtJNXl4Wjd3Z3VRc0lBenByCmJpOFJJREM2UUNTMmV4
N3k1ZzhJRFUyeW9KVno1cjJUbEJKZy9HYy9Pa0JzbGJFdm4yQjVzNXV6bjd4Sm84WFA1TjFCL0t2
WjUySVUKSURUcUpxaVcwL3kyaThpQ240bC9QQ08wbmhIUVpNWDFWZzJoaFFpeGRSMnc0SHEzaFhK
Q0JBS2E0WVlWbW5ZeVFkZ3pqM3ZVajYvLwpLZk1yQ25ZZ3VocksvWHd5eXN6blE0VEs2am43NTdO
MC9hNFUvOUFrejJlaWxKNXV4UTZVZGg2bjdVOG5LVk5YR2Y3QmcrTzlOazc5CnZvUFRuUWttdjEw
Z0RpVGo2L2lmK29sNHZVd3NXRGg5cVlsU0FrdytXamIwUnhML2owUE1oQ3A1KzQ4ZGRQMnVGTitR
bS9FZlpvbkYKcytpd1lIMmJjSjZ1cFdnaFJNanVwTXhwNTlqWjQ5Z1hRb1NzNWRUVVd3RXJGVTFX
SWkzSGNKYVlpQzJIV1JyMUVBanU4ekNEUERyYgpMUHRjZGhSWk9Ud2Q3c0ZHTTNXd1c5bzdiTUVl
eGYzNUVETlVjK1pLRzJmZWJ5RXlPc1hqejJlSVpwc2t5WlB2SGF3RmVOTHZvK0c5ClU1eTZjaExu
UWhRTklMbk96T2VQY1hPTW5qOTMwUEdIRnN4UGZmaERTVXlGMUtOY011eW4zZ2lDSUFqQ1MrRElU
c0h5RGs0eS9QMU0KOXB0MkoyOWZiMmI3L0VLSW1SK0dHUjVlT1hCWjNQLzRtZjYvRERBeEdnSm5P
WTJYT21tb1RSc05qSzNpbWJEak91NmtxcTB5ZFRHQQo3M2wwNzNJWGxEY0ZhMFVxaExNVTZ3c09U
T3FBdmJPTnRvNEtISzRxcWx1QWhYVVNTUWhQZWdsUmlyb2VJVGdmQlp2eHpKd255eHF6ClZGeWwz
YWM1MVZGRjVSdU5kSnc3Qm9Ud2VUSVBHRER5VVo3eFcwM2x4Y1FlMGphWnFlaG9wcWthcUc2azlX
d1RIYmZmb1ZwYnl2bjgKdW1jV0h5NGEzeWdCb0tqMkdMWFZwWlE2ekNoMkswV0Fhak5qdHFxWUZJ
VlN3TDR4WmFBV0FTRmlDYkRWSHVPWTAwajM3YlBIS0trOQp4ckVUYWJKcFVZSmVzTmNWb3dKRmRj
Y29COHJQdG5ETXRmTWdnejNwMitxZytvd2RwaGNKeHdCek1jYzZTMkVoUUhqZEtJM2xRUjlOCnJZ
YXQyT3VQVWJkcG4zc25uODZNMUhMYkVZZW93NzNvTEZNSHU2V2RhUXZybmprV3NkUFdaY3dzS0dV
Vm5QcWRDL0F4TzVOUjM4bWYKNzB6MDFDYTNsZmsxd0VydHRVb1VIV0tlT1h5VWN1WXRZMDhZcXBY
aSttMko1SzFIT1dYUTlsNXZCRUVRQk9GbGNHUm54alM5Mjg0eApaNEs1Znd5eVk1dUdwcU5XVk5K
MnU1U2cyOGQ0Lzl6bXJjalFVL3pIMzZFeTcvS3J2VkYvcVl2YVl4YVNtRkN5VEt0RXZWNGk5VlVv
CkNSMUtTd0UvQVA2ZkZxZy8yY2ptMXRWQzVIWWtDOHBiYVVjYlBhMGFKdXZCYkY0dXNtMU5CZG1x
S21FaVRGelRpUzZHb0w0V2s1NUEKUzRDNXBvWFdHakE1Y20vSVZkUDM4dFJWWUdlUnJPZTZwZ1RQ
dnJwKzcybWJMRUE4bGJhYVpEM244eGJXSnZ6Z2JOd3lhTE9kaGl0dApLWUdNS1NWdFE3Q2lFdHIr
L0E0UnI0K3hyMmN3amliWU9tUkFkUmpwYnZ5MlY1ZkQrSGJaSW9zUjlOUEZLS29aR3hET3V2bG83
M2t1CmJhcUIwU21XZkRGS2ppZFpUQjJjNEorUFVWb1RZU1pZejF2T3JmSkk2dnM5SmpmSjJ2enVP
c3R1UjJBOU5CM3VYV2VaT3NpZnRtRzMKRzdZUUMwYUFJdEpXWTJJdE0yWXQ5WGdXM2U2UzczUVVS
ekdWZ08vSEVYeWpsYlMrZXdLbk5VbHdmaEZ3YlV0ekczbnIwZTR5RkY1dgpaQk8rSUFpQzhISTRN
Z2RFMTQzbEJKVWRMcFpTUzFWaTNqbENEaGMyenlqK1kyMDB1aXc0V3hvNDIrUmkrY2x6Sm9hTWpu
OUN5enpaCjZzV3dGRmt3bVpVY0hmMFlTeitGd0puZzZkMzVqSHMrL0w0NjZseUcyc0pQZHBjNy9P
Ukp3WGxUQ2o3R1ozZTA5TjZMYnFSaEFxUEUKRXpZcWp4YytjcjR0THJNRk8yUmZjckliKzBpN3NP
ZDEvQWtncUtGUndMUmVjcDNaTzQveEJtdnB2SDBXWmlZWitpbGZSejVOQWFvZAoxOXZsK0grWnd2
M1VUTFY5alRtZ3RTRnpGOUZ1TW1mSFZPYWt3UWtlZDRCSzFvbTBORklmbmNFN3MwVEphb2pLZDVz
T3FOSW1TUmFnCnM1eDJkR2c2VEw2NG5lUkxleHRKTk0xd1FOSjlHRlBLY2NocTQzdkp0N21ZNW8v
YXNmMW5CSy9Yei9nLy9EUmM3Y0ljQWtpUTNHK3oKdGxmZEg3ZytCVUVRQk9IRjJQOFNyR1J5NTB4
R3ZvUlN4M2xhNnhxb2Naa2hFV2JxQncrWVFMR1o4VDFOVzJxbFdxam9PRTd0cHBBWgpyc0llMDk0
cFRPNWIydElTY3pUeTloODc2RWo5NjdtZWRscldjR0N6TzFPSTNJWG1MZXFkWmZndi9Ud2JEaGFR
dDkzblNOVDAwNHVVCmpReWJqQ2U5VS9oWDBsS0pyZkxzTzEvT2J0cTJrZHBZSEQ5Z3ovYkJoWTFK
a2MyMDArWGNYOXFnYnh3WmtPZjVSWlJpTytCbHlaZlcKYlZ3TDh1eEgvNVpZS2JuV1orYndCcUgx
d3dac0tsc25KR1NhMmVaZjIzdUpqcnB5d0k3RGttQmRkL0RteDJkeEZtYy9xbmp2ZVRaVAowZUVD
N3d4ai8vYlIwT1dpK2xRdGVMMU1EVUZOL1VHTldpdFk5cUF6NDVHdGluTjRPdHl2bmV3a1Y5cGIr
VEpoSzZzRUFxeUYwOUphCmorRW5JKzhidHdyTU40Qyt2SWh2MVViZDc4L1NkYWtSTytCeHIyR3RN
ZzdFaUc3dW84cWh0S3oxcUZBWkNxazNlOU9uSUFpQ0lCd1UKKzNaQXRHQ1lRT3J2Z0dlVmJOdGc5
YlJsS2VGZ2FtZTFZaUt4SE1SOWQ1UVFsZGdkQ21BQjd5VHVxZkRtdXplNXVrWVFvTHFSOG9ydApZ
aGFTZGlhSjZGWW5hejJjYS93K3prSy9Gem9kMjc4a1V1SEV0ZkZqd2MzQzRrYUtoY2hkU0JpTmxj
ZXBUZWhEOCt6NmdmUlkzRGpQCks2N3ZQTVkzNWVnRmxyZDJza2VYak5rV1RDYWNyUTBBVEg0enl0
enpFS3R6UzR6OTdRbTJqc3FkM2JSa0VnMElyR3pvU3ljNC9oU28KcDdZK3RkOWhvd2RqQWxRRk14
RHE5eEZhaVJGNitwUXBMeEFMRTE3Vjk1WTJPdkU0c0xDVlFMN255MDRZSmVUNTF5QXpFOHNFcCtm
bwovMnFjaXM2S3pYNVpZQ0ZNSkJoa2NkSElUMkIyaGVqeU10UDlBVUJqYlQ1RWREMUpNcFZkdytx
U1JCWUNFSXlrUnNSamVMNmVvdlNNCkMzdEpFVmFiUWl5NHhucjZGOE0zUmQ2anZsTVUxVllhZXdC
YVdpZ3JBbk4xQlpXQS9VeHQ3cE91TmpLcDdmSTdEVWMrbmVXMW80MFoKemNQUTRmNTBscDdIL0dr
YmJOaENpRkxzd015amVUWnlHbDBNQUtYVUh0ODVxNVUvM3p0Q00vT3JIdzBvcW5YaGNnSjJDOFUx
RlVDRQppYS9jckN4SENYdm5qWHF5c2ZjcmJ6M1NkcEZCMjFPOVVZSGtpcC8rdi9Rek9aVmx6NHNn
Q0lJZ0hBSnFWMWZYLzgwWHdKLzA3N2dXCmV2S01vVDdmMW9XMUZlYUhJemlhSzdCWlRJQ092MytF
OFpIVnJTQ2VCV1k5QVdZSFp2Qk4rRmxiQitwZEhHOHFKdUZiWUZFdlFYMDYKZzN0NGxvQm5scG5I
Zml3dGpadys3OEtxN0NYdFRIVDgvVC96Ykd5ckk3VTY0eU1RdDNPczFwN1dMOVB4Ly9pSWFSK3dz
RWpjVVVGNQp1UVcwQ0RQZkR1Rkw2MXlFcHVheE45V2hCbmFYTzE1UTNoUzB0UUQreFFSUVNWMVhX
YzRUdjlhOXN6ejZIN2ZoZEsydE1PZUo0S2lwCndHWTFwYjVnUFlFdm1JQmxQM0Y3Q2NxeWoyZkRZ
U0JLT09IQTFYSU1wME5qMFJzazlIeUpwZWtBeDM3WFFYMWRscEYxeFl6RkhNTS8KNG1GMk9NRHM4
QXorNGtZNnI5VlNwQ1FKUFoxbTlCZS9FZmVpaHEybWtySmpTUmFlKzFoNjVpTldlb3dTZndocVNy
RFppaWlwcVNncwo3ZVE2Y3cvRzhjd25nQkRocUpXeXVtTE14U1U1bnpmWmlxbXFVZ2hOaHdqT0x1
UDNKR2k2MmtGVnVRcUtCWXRwbGFWeEh3dlBkT3JlCnFVYWY5T09mOWJNUXN0UFE2U0RnOVJPY01X
RTMrWm1lanNKYWtMalZnUkpjNE5sb0dBZ1QwUjFVMXRpTlRjU2VJRXRUU3l5NWwxaWEKWE1UM1pJ
NmlSaGZhOU13Mm5SU2ZyS082WEM5TTM1dDZ0Nkt1Qm5DMEhxZkViZ0xGZ2hvTllHMnF4MkhmTUF4
RC8rNEJQd21paEJmago2T0VnejM3ZFNsc1BCN2I5dHJuS0tFcXJJemwxNXRSMnRhUGFFOFZFbng2
R0RtdHhWSlFXYUtNN2RhQUZsNWlaV2MrZGRtM3BObHVvClBkdEEzVWs3MFYrbm1SNk9vRVVYbVhx
czBmcCtLNlZaWnJVc1ZwVklqbndmTzFOTyttZFhrckVJYzcrNm1WdUlvODE3OGE1WGN2cXQKWTlq
S1N5Z3hyK09mWDhJL3NjQ2lwa0lvQ3FYbDFKMG94bVF5WTNQbXJrZk9xcUljTWlReEJlZVo4eFZl
YndDUzBUQnp6NElVdVk3SgowYnlDSUFqQ2dWQnB5ci9zMS9UcHA1L21QWXR4WEIvUGQvdGdTR2dr
emNiYWNtMDlZWXp3cVJZczFsZjhJMmlGeUwySHZDVWljUlNiCmhTUDUrSFJDSTZFbFVhem0zZE5M
SnRFMW5TUUs2bTVuSVFOb09sclNaSVRWMkxrQ1ppOXA3MVgyWkJJdHJxTllWRXdaOS9TWWpyTHAK
elNiUkUyd2RRcUFsODN4d01TMzZ0UldlZnJWQTNhMlRPTXhKdE5SbS9QWFo1MHhIWFhSME9QWXVj
OWFFa216TFFPYnZneVNQem5aNQo4SEIxK0tKMmtvZnR0bURrSlJHSm95Vk5XSXN0dXl4eTNHTytO
UjFOQTlXNmZTWTNtZERRZFFYVkN2NGZmbVl5M2tUUGxXTmIwOUo1CjY5RStkSjlIbjhtRWpzbDha
SWNpQ29JZ0NMOXhXcFhXdlBlUGJCTjZYc3hiSnorcFJlWUQzRzUreUJRaTl4N3lacllmNGVpaldj
VmMKYU9tYlRDam1QWlNLcW16bE05dGplMGs3Ry9tZU41bFFjMnptMzk3aE5LR2t4MUhRRjcrVEJI
NTlTb2hhbW9wVUZEVzF6RWRMRUZxTwpVTkdVWjFaanIzbk85QVFPeS9sSXhaMUxaN3M4ZUxnNmZG
RTd5WU5pemV4c216RGJyUVUyaUh2TXQ2cGtQZkhLWkZaVDFTTzVjeW5sCnhuT2JmNytnREpCWG4r
SjhDSUlnQ0VmSnErR0FDTUpyZ1FsSFV6MU1lM244MXpuQWpwMElFY0QxYmp1Tng2UTY3WTdvY0R0
SjFwZFgKV1BFQ3VGbjBsZUp5eWZHNGdpQUl3bStiVjJNSmxpQzhSaVRYMXdrdnJ4dXJZb3FzMk10
dGhRMytDNXVJRGxNa0U2ek1ySkMwbWpHUgpSTk5WeXVwTFhwOVpZRUVRQkVISXd1dXhCRXNRWGlO
TVJVV1UxTW9vOVlzZ09reGhNbE4yUXI3UElRaUNJUHp2UWhiK0NvSWdDSUlnCkNJSndaSWdESWdp
Q0lBaUNJQWpDa2JIckVxemQxbkFKZ2lBSWdpQUlnaUFVaXN5QUNJSWdDSUlnQ0lKd1pJZ0RJZ2lD
SUFpQ0lBakMKa1NFT2lDQUlnaUFJZ2lBSVI0WTRJSUlnQ0lJZ0NJSWdIQm5pZ0FpQ0lBaUNJQWlD
Y0dTSUF5SUlnaUFJZ2lBSXdwRWhEb2dnQ0lJZwpDSUlnQ0VlR09DQ0NJQWlDSUFpQ0lCd1o0b0FJ
Z2lBSWdpQUlnbkJraUFNaUNJSWdDSUlnQ01LUklRNklJQWlDSUFpQ0lBaEhoamdnCmdpQUlnaUFJ
Z2lBY0dlS0FDSUlnQ0lJZ0NJSndaSWdESWdpQ0lBaUNJQWpDa1NFT2lDQUlnaUFJZ2lBSVI0WjUx
eEQvK093SXhCQUUKUVJBRVFSQUU0VGZCSHovTmUxdG1RQVJCRUFSQkVBUkJPRExFQVJFRVFSQUVR
UkFFNGNnUUIwUVFCRUVRQkVFUWhDTkRIQkJCRUFSQgpFQVJCRUk2TVY4NEJDZXV3cWtNMGFmeU82
S0MvUkhuaXlaZWIvcDVKUWlSNWNIR0ZkOGw4V0lQWUFTWDNXK0dvZEtJbGpicVNMKzE5CnkzS1Fk
blNJWk5QQks4K3JxdHREbE91MUxDZEJFQVRoME5qOUZLdzBKc1B3c0lEZVRLOFRpRURmTG1HYmlx
RzN5UGc3a29CL2hTQUkKdEZoaElnWk9Nd1NUOEhFWmVQYVFkbE9HVytVTzd5NUxTekdjSzlwNXZT
OEF4MHFoUFl1bXNzYXJ3bHNxUE1weS9XWXBsSmwyeThGTwpDdEY3VXpGVUptQWdCazQ3ZkdEYmV6
cnBqSVJoTUU5YzgxSDRMbUw4ZmIwY3F2YVJyOThhUjYyVDZUQThqQnRwSmRhM3A1MzVleSt5CmpJ
VVB6bzRPbTNRZHZBNDIrS3JxOXJEbGV0M0tTUkFFUVRoYzl1U0FrQm9kdTF3R05RcjhFQUF2VUcr
SDM5dGdhUjN1cnNHNkRtME8KS0ZIaDIxUW5xTTBCUFZaak5tRXRBUU9odE5HMlpNcjVzTUp0QjFp
QXM4WFFINENnR1V4N1REdHpYcWNwanl3cmNmaG1kV3ZHSloxSQozRWpEdXc1dFpsQXo3amM1b05R
TWQ5YU0zeTRiWExVYmYxZW5wVmR2aDBzdjhGTFhkTVBCZU1zSzFpUThDSUpYaFE5THdaS0VaMkdZ
ClMwS3JIVHl4dlJacWR0cnNoZ1BpeUhHL3hnWlhNRHE1cjBOL1lqWU9kWmJEVGVPb2RWSm1nWG9G
aWsxZ3owajdSV1E1U0RzNmJOSjEKVUNoSFlRdTVlTlYwdTZHTGc1QXJuMTczVTA0SHhjc3NiMEVR
QkNFN2UxcUNGWTFEVHhuVXFjYUQ2VzI2QWxRWFFSY1FUMTFUMDE0MgpwUnU5OXlTb0tyeGJBcjVV
cHorYU1HWStVcmVOK0V6d1RobVFNSzd0TmUxTXNzbWk2V0N6d1B0MjhHWnhRR2FpcVQ5aU1KZGor
VUJwCjJodmJuSlpHV2RyMW1oZnNiZWdLdkZrRWRwT1JEd3VBQWxZVFdCVTRYUXgyREoyWmdjUUJ2
T1JWRTlSRDN0NXIwZXZnZVFBellYaWsKSFUxYVI2bVRxaUs0bENyN2JHbnZWNWFEdEtQREpsTUh1
M0dVdHBDTlYwbTM2YnA0VWJsMjArdGV5K21nZU5ubExRaUNJR1JuVDEzagprNlZneXB3R3lPQlVH
V2haM0JvOTFjRmZqb0xIQXQwV3VKRUt0OW4zajhIbk1UaGJBazBXc0tTV0xha3ZtSFl1V2J4aENO
cWh1d2h1ClpEZ2dtZ1lEaWEzZnY2NUR3MTdlbm50NGtRZGkwQmNHaHczZXRZTTE0MzVicm1tSUZJ
b0t2U3BiaXRRTjUrbEJhZ2JtWWhrMHBIU24KNi9BNERDTUp3QXk5ZG1qS1l3VUpIY1lqMEI4MWxz
UjFGa05qbG5JWUM0TkhoL0lpWTNacDQ3ZFpoZDVpdzJrcU5PMndCck14Q0NuZwpTc0w5Q0hTVlFM
dWE1L24vdjczNy8zSGp2dk03L3VKKzAwb3JXWkxQWCtQYVNTNk9tOFQyQmJtZ1JYNXdpc1IzYUZP
a1FKR2doZnJuCjlNOXBVS0Q5cVdoYVhIRnQ0aGh1VWxlRnp6NWZzMXBpaUFBQUdkZEpSRUZVRlNX
eDdMTjkxdFcydnEyMFMzSzUvZUV6NjZVb2tydGMKU1cvSHp1TUJCUEZxbCtUTVo0YmtQSWN6dzkz
a3dzMTJHRW1TZkhFOStlYng1S1BONU9YdTMzNTZLM24rZExJeFRNNXZKaXVyeVh1RAo1RHVuMnYz
Y0dDYnY5Sk5MbytUWnRlVGx6WGE3dmQvZjlqZzdTWGFTWjlhVFI1YVRwYVhrOFNuemN0aDVmdmRX
OGxmRDVGaVNaMDRrCnQ3YVNpNlBrMkc3N1pPM1pia3gvMjIvejhIQ1NENGZKeGEzazJWUEpnMGZa
Y0p3eFpwK3M1blBXb3l2OSt6ZUdoeDJ6L3VqMk1WamIKbWYvWTcwNVpGNTdvdFduNTdTakpNRG16
bmp5M25weWNNWjZ6NW51YXY5OU9YdDFPTm5ySlpwTHZuRXpPM01YWVhodTJUeW11OXBMSAplOGty
M1cyL2RUSjVwdHNqYytqMWJYSXNIamo2ZEUwZDE3SFg0Y25sOUdCdnh0aE1qUGtpNjlLMDVYZlFk
TTFjUnIxMnZ4ZHZKcS8yCms5UEx5Wm1WOW05L3VwRzhkWWpYdWxsamRhVFhOb0RQb1lVK0FUbStr
aHgwSk5INmNuc3huelRZVGE0TWtyL1kycitQQjdzM3RtTVQKRzdTdjNrait3OGZKaFg3N0pHSDVM
aDk3MHM1dThtRS9lV1hZM1djdmVYQmlKUDV1cTIzNGY3MmJ0cXRieVlmMzZRVE5qL3Z0RTZEMwp0
dG81TDNkak5jbmxyZVRpYnZMbko1Tkhrcngwcy90a2FEZjVIMWVUOWVQSnViUEp0M3JKSzlmYkcv
eTgrM28vN1EzeDZqQjUrVnJ5CndaUnBmT1pFY25tNGY2THBNeHZKRTBuZTIrbTZhSUhIL3FqZmd1
ZkN6ZVRDVG5JNnlmWFIvTnVmdjVKOHNKejg2N1BKRHplU1MxdnQKUEp4SGpyZmJQN0tlZk85TThs
aVMvN0taL05ISjVMc25reGZYMi8zY1NndlRTOXZKMVVIeThpQjVzUnUvVjI3dGY3SjJhVE01UDJy
bgpKZjF3STdtd2xieTBtV3hPVzI0THpQTVQ2eTJNTGk4bGp5MG5UNTlJemd5VHk3M2ttYTVJbjF4
cmh5ayt2dFFPWTd5MDFjYjNxR2FOCldYTEFlalM2ajJPNHdKaE5qc0ZCajMzSHV0QkxmblVsT1ov
a3owNGxmL1pBY21VcitVOVhrbXZUbHVlYytiN2pUMGZ0a05EblR5WGYKUFpWOFliZy8vMGNkMjFz
N3lXdmJiWjdmVC9KUE50cjhuTCtSWE5wWmJPenVHSXVsbzAvWHRQdWF1NXptak0xdFkzalF1clE3
Zi9rZApORjN6cHVQOGxlVFZKRDgrbS96Z1ZISnN1NDFqTDRkNHJac3pWa2Q1YlFQNFBDcTdDdGJy
dDlxNUZsTW5ZaW41MGFuMjVqTHUvR2JiCmMzV3ZYNGRmdTVYOHhlYWNQOWhOL3FxZmZIVXQrZExZ
aWVtL3ZrK1hOanF4RjJETGQzK005Q0RKNmU1Y2xEOWFUWjVlU3pKc1YwTDYKY0R1NW5HUjFsTHc3
eUNlZjBydzVZNzcyTnRxK2U3enRIZjluSjlxL1g1ang5MStZK0htMXUvL2Vnby85NVBIazJ5dEpW
cElYTnBJZgpuRW0rc2p2NzlqZjZ5WVVrZjdyZVZ1aVRxKzJpQVE4dHRXbllTTEt5bEt4M2g3QTlr
clpYODVPSlMzSnp0eDJuL3NmTDdYRi90SkU4CnZOb3VpUENKM1hZOCtlblY5aW5WeWRVMnoxODRr
VHc5NVJqemhjYTdsenk5bnFTZmZMVGJmdjd5ZXBKaDkzT1NkMjRsMys3bThjeGEKOG8wcEYwMDRy
SGxqbHN4ZmozSWZ4M0NSTVpzY2c0TWVlM0pkMkJ3a3YwM3l2VzZ2OWVweVc5K1M1SzluTEtOWjh6
MXBwL3UzeTkwVwo3ZGRPN1o5RGR0U3hmZlJZOGlmTFNZNGwzMWxQSGw5THZuZXkvZjd0d1dKamQ4
Zno0aTZtYTlwOWpadGNUdlBHWnR4QnkvUGFBY3Z2Cm9PbWFOUjJiM1hQano3djdUUzg1TS9IOG52
ZGFOMitzRm4xdEEvaThLdnVROTlzYnlkUEx5WnZYa3NtZHRxUGRaR1VsK2Y2WmRvakIKU3pmM2Yz
ZDFLM2xuTGZuaUFZZGZMVHd0UzIzdjJUVFgrc25WMVdTNU8xOWx6NldieVhQSGtwUDNibEtTSkk4
ZVQzNjgzbzdEdmhlegp1VEdXbGFkV2t2VGJTZmJYaGtsVzJ3Ym5jRGM1dHBxOHNOb0NjSmJ4ODFy
T3JDV25iMmJzbUxrN0RXZjgrNktQdmR3YmU1eGVPeHhqCjF1MC8zazZ5UEhib1dpLzVrMVBkZjNm
M01SeTdyKytmYllkSS9PVm1lK1B2L2psSnNyclViclAzOCttVkpOdTNUOXZWYmsvcGFxL3QKd1p6
MXlkaWk4L3pJV3BLdDVLMUI4dkJhOHJ2dUhLUzNCOG1qcSsyUXBYODV0b0xjVFpoL1BNaUJZelpy
UGRxNGoyTzQ2SmhOanNGaApIbnR2WGRqc1hvakd0eTJQZCtNN21MWk1ENWp2eWVuNFl0cmhPUmUy
MnNibUUyUHI5SkhIdHBjOE1uYmI5WlcyTVR6TTBaN2Z3NG41ClBPcDBUYnV2Y2VQTGFlYllUREZ2
ZVI1MitjMmFybG5UOFc0WEpLc3pwdW1UKzUzMWl3UEdhcEhYTm9EUHE3SUEyVHZ2NHFuMTVLMjkK
RFlCK2NuazVlYUNmdkwyU2ZHczFlZUpZY202dE93NjUyd0RidnNlSFBvMjZQY3gvdko2OE8rWDNi
OTFNc3R5dXpEWHAwaUI1OWg1YwpVZVg5bThsSGE4bXozUkk0Nk0xdUVkUGVjUGYyekdXM0hjcHoy
UGUyeWZzNmsrbUhuQnpvQ0k5OTJOdGYyazZ5MHpZSURyTm8zcmlXCnZMNlQvUE16U2ZySmY3NTU0
RTArbVlhdkhrOHVkZWZFZkdVcGVUUEpDNU1uN1J4aW1xZFpYbTU3dUYvckowOGx1YktXUExlYnZO
NVAKSHRwcFYxMjdWMWRJSFNVSGp0bk05U2ozY1F6dmRqMVp3Tjc4amU4UVdlNDJTbWV0NDRlZTcx
N3lqODhrcHphVDF3ZkpTOWRhNE8wZAowbmt2eDNZMTNjYndQUmk3KzdMTXA5emgxTEZaOE4zb0tN
dnZNTk94MnRYUzN2dkVVU3cwVm9YclBNRHZpN3Q2dlp0MXhhbXBEOVM5CmtHK3NkaWRNN2lhLzdB
NkRXbDVLTG15UDdTWHJ0WStxdno1bkloZDU3Rm5UY21iOXpqZTkvckJ0RVAzb2dlUUgzZjkrZkdy
Lzk2OXYKM2Y3RmJvY1p3S1dKTjdIUktQblpkdkpRdHpGeXJaLzg5T1BrNTdmdWJyNzJyTXg0MDF4
S2trSHl6dmc3OW03eTgrdXp2Nnp1dHZ2YQpUUzRsT1ROdnB1L2hZM2QvY3VEdFY3cnBlV3RzOEVh
ajVPZWIreHNuZS9OeG85ODJERjQ0UGY4N1dXWTE3OWx1US9uQlhuSWp5Yjg0CmMrZUpyWHVPTXM5
UHJyZmIvUGZONVBrVHlWZU90WjkvdWJWL292RzlzTDdBbUUyNm4yTjQxUFhrc0krZDdNL1gzdFh3
UGg1N3JGRzMKamsrYjk4UE9kNUlNaHNuRm5lVFprOGtQVDdaUGVWN2J2bmRqKzRteDUrUmRQNy92
Y3JwbTNYYlNRV016emJUbGVkamxOMnU2WmszSApSdmVlY1AyZ0hWLzM2UGx4cjlaNWdNK1NJd2RJ
ZjZkOVIwYlNydkt4TmVWdmRzWmV3RDk1aytpMWpmeGZYVzhmVFovZW00SkJ1eHJKCjNwL3RqTHI3
WDBuK3dXUWtIT0t4NTAzTC8rcytPLy9ra3JaamZuTXp5ZnJ0VjZKYVhVbWUyZnRobVB4bTdMUDNx
MlAvUGY2Ui9QV3gKRGJ2eE44aHJ3K1FYM1RXSDkwNlkvN3V0L1pQUXJ4ejBwcmViWE9uKy80NC83
ZTd2dmVGK3pGMGZtNmpIdStPd1g3bldqaS8rKzBIeQpsMWZhY2QvVGR1SVAwMDZzM0x1dmQ3dERI
NzYyOThmakU5QnJlK2N2MzB3KzJHbGZ5dmZMUWZ1YmowYUxQL2JXYm00YjBIbTNmNlM3Cmc5ZHVK
T2UzMjJGOC8vNXE4dFR4L1VQYTNoc21WM2IybDkxN2c3WXNYdTMyVEg0MGFDZXU3cTBuZTdlN09r
eXlzMzhVeit0WDIwbXQKcDd2emRXN3VKRGZHeDJIc3Z4ZWQ1MlQvbklpc3RaT2sxMWZhSHQzVDYz
ZGVKZWdPa3l2RW5IWHB3WGxqZHNCNnRMZm4rWDZNNFZIRwpiTnhCajcwM1gxZDJ1dGVmSk9kdnRT
c2dKZDNoTUVtK01lWEJEcHJ2U2VkdnRRM0lrNnZ0OE5NczNmM1lwcGRjN3UrUDE2VnVWLzlYCjE0
NDJkbnRqY1dGd2w5TTFmbCtIMkdxZU9qWlQvbTdlOGp5emVyamxOMis2cGszSDJlNzk1dVdyeWZ2
RGRzR1NYNDZkbTNIUWE5MUIKWTdYSWE5dGEyaFVaZi9KeDhzckVvWVFBbjJYTHp6MzMzTCtkK3hl
L2VlT09mL3BnSy9ucCtFbmNvK1QvYmlWbmorM3Y4Ym0wMmZieQo3L2w0a0x3eFNONjQyZDRJUHQ1
TnNwcDg4MWl5UFd3bkU2NXVKNy9hU3Y1MjBONFkxdGVTRnpkdXY3TFZZUjU3MHVTMFhPMm01YW0x
CjI3OHI0ZEptOHVvd3lUQzV0WlE4MFYxNjhmejE1TUxZQnNZSC9lVDBzZVRLemVSblkvV3pPVXpl
R0NiSGhza3Zac3o3eFg1eVBXM2UKbjE5cmI2ejlVWEpwNzQxenltVjQ5OXpvSi8veGVyY3hOVXIr
WnBDY1hkMmY3d3VieWErN1M1dHVMU1ZMTzhsTDNmUjl1SnM4ZmF4OQpHZGh2QjhrSGcrUjMvZVRM
RzIwNjd0QnJKMjVlMmtyK2VpdDVZeXQ1ZTZsZEZ2bGtyeTJILzladC9IdzRURTZ0Sm8rdEpCY0h5
VnZiCnljM2xkdGhRVnR2ZlA3emFydDUwbU1kKzgwYnlXamNlSDQyU3g5YmFIdnRadDE5ZVNyNjAw
amJNM2h1MGN5YStmYW83Z2JYYldIaHIKTy9uTmRydU04S0RmL3ViaUtIbCt2YTF2N3crU0I1TDg3
MzRiMjYxZUc3OWZkT04zTmNsVHErM0U1WXVENUsxKys5L3Yrc212dDVLTgp0YVRmdjMxTXpoeHJH
eldIR3UreGNWOFp0ZTlOZUhpcC9idzhhdmYvME5qdWdnKzJrdjkxcTYwTEh3N2I1WkwzcG5YYXo2
ZFdiNyswCjdMd3hPMmc5K29mSGtxdmI5MmNNSDFvNS9Ib3lPUWFEbmVUL0RPWS85dkd4ZGVGcko5
ckowZGU2dzhFR28rUi9iclZMeno0NlpkZk0KMmxKeVpjWjhmM205ZlUvUG50RnU4dWF0NUcrR2JV
Lzc2N3ZKaXllU2QyOGVmV3kvdko3MEI4bTd3elplYjJ3bGY3dVR2SGc2T2R0cgp5L1N3WXpmNXZE
aVo3cXBMUjVtdTQ4blppWEU5T2ZHYVBiNmNUcTBrYjIvZE9UYVRWekI4LzFieXlyeDFhUzM1MHRx
YzVUY3hqNVBUCk5Xc1puVjVwMzlaK2FaaGM2cmYzcG95U0xDZGY3MTZ6VHkzUGZxMTdiSFgyZXRM
YjZTNjFtOE85dGlVdHd0N3NQcGx4YVY3Z00rTXIKejgzOWRlL2N1WFB6OTduLzE1L2N5OG1aYXJT
YjdIWW5ZUGYzOXFEMmJuOUQvN3piR3JVTmlJb3Y3QjN0dHIxKzB6NEJtbWJRZmRxeQpkb2psTWRw
dE8vZldldTIvN3pqOGJNSEhubmIvODI3ZjMyMi9tOXliT3VqK2ZXbnM1NzN6YnFaTjV6UTdvK1Ju
VjVOdm5HNkhEKzN0CjZid3hTRjRkSlQrWThUMHhSNW5uVVc3L2VITHk1M3RwMXBnZDVINk80ZDJ1
SndkTjkvaTZrTFRuM3pESjhSbDc0aWR2ZjlqNUhuOCsKTERxTjB4N2o0dlYyVVk3dkgydkxiYVYz
NTNxeHlOaE5HNHVqVE5kUjd1dW9ZelBOdk9WMzBIVE5tbzZkM2ZhSi9Gb3Z1WFFqZVdXMwpIWTY3
T3VWMjA5YURSWjhmODViYnptN1NXMkJzQVQ1MS8vVGMzRi8vWHV4UEdYOWhYdXZseUNmK2ZaYXRG
NzZ6TFBVV081bDVrUlBrCmwzcjduK0JNZThOZDlMRVh2ZjJzalpuSmVSai8rVEFiemtueTNxMTIy
TTQvNnJYYnIzWW5qMTRlSmsvT3VTVHVVZVo1Y25XNG42dkgKVVRjQTcrY1kzdTE2TXMrMDlYbVI1
OThpOHozK2ZGakVyTWNZN1NhWHUyT2taaTIzUmNadTBZdGZ6SnYzUmUvcnFHTXp6YnpsZDlCMAp6
WnFPOFNpZmRzVzVnMTdyRm4xK3pGdHV5MGQ4amdMOHZ2cTlDQkQ0TEhod0xVbS9mZEZaMG80L3Y1
cjJSV1RmOUV3NkZHTjRkTmNHCis5OGUvMDUzeUdQRko2Wi82RzRNMjZGUlNmSzdRZnUrR3A5RUFO
d2RiL2x3U0J1cnliODZrM3pVZlRuYldxOGRMMzZ2OXVMK0lUQ0cKUjNkck4zbmhaTnY0N1kvYTRV
RUM1UDY3UGtxZVBOa3VCakhjTyt6cTA1NG9nTTg0QVFJTFdPNU9xT2Zvak9IUlBHcXI5MVB4dUhF
SAp1T2Q4a2d3QUFKUVJJQUFBUUptREQ4RTY0REphQUFBQWgrVVRFQUFBb0l3QUFRQUF5Z2dRQUFD
Z2pBQUJBQURLQ0JBQUFLQ01BQUVBCkFNb0lFQUFBb0l3QUFRQUF5Z2dRQUFDZ2pBQUJBQURLQ0JB
QUFLQ01BQUVBQU1vSUVBQUFvSXdBQVFBQXlnZ1FBQUNnakFBQkFBREsKQ0JBQUFLQ01BQUVBQU1x
c0xQTEhQL25Kdjd0ZjA4RVJuRHYzYno3dFNRQUFnSVg0QkFRQUFDZ2pRQUFBZ0RJQ0JBQUFLQ05B
QUFDQQpNZ0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pRQUFBZ0RJQ0JBQUFLQ05BQUFDQU1nSUVBQUFv
STBBQUFJQXlBZ1FBQUNnalFBQUFnRElDCkJBQUFLQ05BQUFDQU1nSUVBQUFvSTBBQUFJQXlBZ1FB
QUNnalFBQUFnRElDQkFBQUtDTkFBQUNBTWdJRUFBQW9JMEFBQUlBeUFnUUEKQUNnalFBQUFnRElD
QkFBQUtDTkFBQUNBTWdJRUFBQW9JMEFBQUlBeUFnUUFBQ2dqUUFBQWdESUNCQUFBS0NOQUFBQ0FN
Z0lFQUFBbwpJMEFBQUlBeUFnUUFBQ2dqUUFBQWdESUNCQUFBS0NOQUFBQ0FNZ0lFQUFBb0kwQUFB
SUF5QWdRQUFDZ2pRQUFBZ0RJQ0JBQUFLQ05BCkFBQ0FNZ0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pR
QUFBZ0RJQ0JBQUFLQ05BQUFDQU1nSUVBQUFvSTBBQUFJQXlBZ1FBQUNnalFBQUEKZ0RJQ0JBQUFL
Q05BQUFDQU1nSUVBQUFvSTBBQUFJQXlBZ1FBQUNnalFBQUFnRElDQkFBQUtDTkFBQUNBTWdJRUFB
QW9JMEFBQUlBeQpBZ1FBQUNnalFBQUFnRElDQkFBQUtDTkFBQUNBTWdJRUFBQW9JMEFBQUlBeUFn
UUFBQ2dqUUFBQWdESUNCQUFBS0NOQUFBQ0FNZ0lFCkFBQW9JMEFBQUlBeUFnUUFBQ2dqUUFBQWdE
SUNCQUFBS0NOQUFBQ0FNZ0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pRQUFBZ0RJQ0JBQUEKS0NOQUFB
Q0FNZ0lFQUFBb0kwQUFBSUF5QWdRQUFDZ2pRQUFBZ0RJQ0JBQUFLQ05BQUFDQU1nSUVBQUFvSTBB
QUFJQXlBZ1FBQUNnagpRQUFBZ0RJQ0JBQUFLTk03ZCs3YzdxYzlFUUFBd0I4R240QUFBQUJsQkFn
QUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRClJvQUFBQUJsQkFnQUFGQkdnQUFBQUdV
RUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUEKQUFB
QVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FB
QUFCbEJBZ0FBRkJHZ0FBQQpBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJH
Z0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsCkJBZ0FBRkJHZ0FBQUFHVUVDQUFB
VUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUkK
QUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxC
QWdBQUZCR2dBQUFBR1VFQ0FBQQpVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFB
R1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHCmdBQUFBR1VFQ0FBQVVFYUFB
QUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJv
QUEKQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFG
QkdnQUFBQUdVRUNBQUFVRWFBQUFBQQpaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNB
QUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFCkNBQUFVRWFBQUFBQVpR
UUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFC
bEJBZ0EKQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FB
QUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUQpSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVh
QUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBCkFBQUFaUVFJQUFC
UVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdB
QUZCR2dBQUEKQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VF
Q0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbApCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFB
WlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJCkFBQlFSb0FB
QUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdn
QUFBQUdVRUNBQUEKVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFV
RWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCRwpnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlB
QUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBCkFBQmxC
QWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFH
VUVDQUFBVUVhQUFBQUEKWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFB
QUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRQpDQUFBVUVhQUFBQUFaUVFJQUFCUVJv
QUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBCkFG
QkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FB
QVVFYUFBQUFBWlFRSUFBQlEKUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFR
SUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQQpBQUFBWlFRSUFBQlFSb0FBQUFC
bEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFB
CkFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFB
QUFBQVpRUUlBQUJRUm9BQUFBQmwKQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJR
Um9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSQpBQUJRUm9BQUFBQmxCQWdB
QUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVD
QUFBClVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFa
UVFJQUFCUVJvQUFBQUJsQkFnQUFGQkcKZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFB
QUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQQpBQUJsQkFnQUFGQkdn
QUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVF
YUFBQUFBClpRUUlBQUJRUm9BQUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFB
QlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQUFHVUUKQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJB
Z0FBRkJHZ0FBQUFHVUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQQpBRkJHZ0FBQUFH
VUVDQUFBVUVhQUFBQUFaUVFJQUFCUVJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFB
QVpRUUlBQUJRClJvQUFBQUJsQkFnQUFGQkdnQUFBQUdVRUNBQUFVRWFBQUFBQVpRUUlBQUJRUm9B
QUFBQmxCQWdBQUZCR2dBQUFBR1VFQ0FBQVVFYUEKQUFBQVpRUUlBQUJRUm9BQUFBQmxCQWdBQUZC
R2dBQUFBR1VFQ0FBQVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkJHZ0FBQQpBR1VFQ0FB
QVVFYUFBQUFBWlFRSUFBQlFSb0FBQUFCbEJBZ0FBRkRtL3dQUHoxQXpGWDBuMmdBQUFBQkpSVTVF
cmtKZ2dnPT0KCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxh
eW91dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1jbGlwLWV4cGVjdGVkLnBuZwpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
CgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFKWUNBWUFBQUNhZG9Kd0FBQU1ta2xFUVZS
NG5PM2RJUTdDUUJCQVVRb05WMXdjCmtqTWhjWnlSaEpRYnRLaFBnUGZzamhqN00yS25NY2F5QXdB
QUNPdy92UUFBQVBBL0JBZ0FBSkFSSUFBQVFFYUFBQUFBR1FFQ0FBQmsKQkFnQUFKQVJJQUFBUUdi
ZUdyamU3c1VlQUFEQUQ3aWNUNnZ2TGlBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJH
Z0FBQQpBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJH
Z0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBCkFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJH
Z0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUkKQUFDUUVTQUFBRUJt
R21Nc2F3T1BaN1VLQUFEdzdZNkg5WGNYRUFBQUlDTkFBQUNBakFBQkFBQXlBZ1FBQU1nSUVBQUFJ
Q05BQUFDQQpqQUFCQUFBeUFnUUFBTWdJRUFBQUlETnZEV3o5WkFnQUFQQXVGeEFBQUNBalFBQUFn
SXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBCmdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFn
SXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUEKQUNBalFBQUFn
SXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJ
d0FBUUFBTWdJRQpBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJ
d0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJ
d0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJ
d0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3
QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3
QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBCk1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3
QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUEKZ0l3
QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQQpBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFCkFBRElDQkFBQUNBalFBQUFnSXdB
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0EK
QVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBagpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJCkNCQUFBQ0FqUUFBQWdJd0FB
UUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUEKTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQQpnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBCkFDQWpRQUFBZ0l3QUFR
QUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUUKQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QQpBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqClFBQUFnSXdBQVFB
QU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBREkKQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQQpNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBCmdJd0FBUUFB
TWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUEKQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRQpBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBCk1n
SUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUEKZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQQpBQ0FqUUFBQWdJd0FBUUFBTWdJ
RUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
CkFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0EKQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBagpRQUFBZ0l3QUFRQUFNZ0lF
QUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJCkNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUEKTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQQpnSXdBQVFBQU1nSUVB
QURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBCkFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUUKQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QQpBUUFBTWdJRUFB
RElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqClFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBREkKQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQQpNZ0lFQUFE
SUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBCmdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUEKQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRQpBQURJ
Q0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBCkFRQUFNZ0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESQpD
QkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBCk1nSUVBQURJQ0JBQUFDQWpRQUFBZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUEKZ0l3QUFRQUFNZ0lFQUFESUNC
QUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1nSUVBQURJQ0JB
QQpBQ0FqUUFBQWdJd0FBUUFBTWkrWCt3M0VhaWRxZUFBQUFBQkpSVTVFcmtKZ2dnPT0KCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW50ZXJtZWRpYXRlLWxheW91dC1wb3NpdGlvbi1l
eHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKaVZC
T1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllDQVlBQUFDYWRvSndBQUFNMkVsRVFWUjRuTzNa
c1cwQ1FSUkZVZHVNNk1VUgp6U0JCUUxJZDBBRU4wUXdSclNCTGxwMFRlQk4wVi9LZWs4NFBYbm8x
NzRmRDRlY05BQUFnOExIMEFBQUFZRDBFQ0FBQWtCRWdBQUJBClJvQUFBQUFaQVFJQUFHUUVDQUFB
a0JFZ0FBQkFac3dkZkgwWE13QUFnUDlndS9uNzNROElBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUEK
WkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQQpBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBCkFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpB
UUkKQUFDUUVTQUFBRUJHZ0FBQUFKa3hkN0M3ZmhZN1h1NjJ2eTg5QVFBQWVPSUhCQUFBeUFnUUFB
QWdJMEFBQUlDTUFBRUFBRElDQkFBQQp5QWdRQUFBZ0kwQUFBSUNNQUFFQUFESUNCQUFBeUFnUUFB
QWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBCkFESUNCQUFBeUFnUUFB
QWdJMEFBQUlDTUFBRUFBRElDQkFBQXlBZ1FBQUFnSTBBQUFJQ01BQUVBQURJQ0JBQUF5SXk1Zy9Q
alV1eDQKdWVsMFhIb0NBQUR3eEE4SUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNB
QUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUQpFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNB
QUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFKa3hkekNkCmpzVU9BQUJnQmZ5
QUFBQUFHUUVDQUFCa0JBZ0FBSkFSSUFBQVFFYUFBQUFBR1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFB
QUFBQUdRRUMKQUFCa0JBZ0FBSkFSSUFBQVFFYUFBQUFBR1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFB
QUFBQUdRRUNBQUJrQkFnQUFKQVJJQUFBUUVhQQpBQUFBR1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFB
QUFBQUdRRUNBQUJrQkFnQUFKQVJJQUFBUUVhQUFBQUFHUUVDQUFCa0JBZ0FBSkFSCklBQUFRRWFB
QUFBQUdRRUNBQUJrQkFnQUFKQVJJQUFBUUVhQUFBQUFHUUVDQUFCa0JBZ0FBSkFSSUFBQVFFYUFB
QUFBR1FFQ0FBQmsKQkFnQUFKQVJJQUFBUUVhQUFBQUFHUUVDQUFCa0JBZ0FBSkFSSUFBQVFFYUFB
QUFBR1FFQ0FBQmtCQWdBQUpBUklBQUFRRWFBQUFBQQptVEYzc0x0K0ZqdGU3cmEvTHowQkFBQjQ0
Z2NFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBCkFRQUFN
Z0lFQUFESUNCQUFBQ0FqUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnSXdBQVFBQU1n
SUVBQURJQ0JBQUFDQWoKUUFBQWdJd0FBUUFBTWdJRUFBRElDQkFBQUNBalFBQUFnTXlZT3pnL0xz
V09sNXRPeDZVbkFBQUFUL3lBQUFBQUdRRUNBQUJrQkFnQQpBSkFSSUFBQVFFYUFBQUFBR1FFQ0FB
QmtCQWdBQUpBUklBQUFRRWFBQUFBQUdRRUNBQUJrQkFnQUFKQVJJQUFBUUVhQUFBQUFHUUVDCkFB
QmtCQWdBQUpBUklBQUFRRWFBQUFBQUdRRUNBQUJrQkFnQUFKQVpjd2ZUNlZqc0FBQUFWc0FQQ0FB
QWtCRWdBQUJBUm9BQUFBQVoKQVFJQUFHUUVDQUFBa0JFZ0FBQkFSb0FBQUFBWkFRSUFBR1FFQ0FB
QWtCRWdBQUJBUm9BQUFBQVpBUUlBQUdRRUNBQUFrQkVnQUFCQQpSb0FBQUFDWk1YZXczUlF6QUFD
QU5mQURBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFB
CkFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFB
QUJrQkFnQUFaQVFJQUFDUUVTQUEKQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFB
QUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSQpBQUNRRVNBQUFFQkdnQUFB
QUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFB
QmtCCkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFB
QmtCQWdBQVpBUUlBQUNRRVNBQUFFQkcKZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFB
QmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUQpFU0FBQUVCR2dBQUFB
QmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFC
a0JBZ0FBClpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFC
a0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUEKQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFC
a0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQQpBRUJHZ0FBQUFC
a0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJr
QkFnQUFaQVFJCkFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJr
QkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0IKQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJr
QkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCRwpnQUFBQUJr
QkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtC
QWdBQVpBUUlBQUNRCkVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtC
QWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUEKWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtC
QWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQQpBQmtC
QWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JB
Z0FBWkFRSUFBQ1FFU0FBCkFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JB
Z0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUkKQUFDUUVTQUFBRUJHZ0FBQUFCa0JB
Z0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQgpB
Z0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFn
QUFaQVFJQUFDUUVTQUFBRUJHCmdBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFn
QUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1EKRVNBQUFFQkdnQUFBQUJrQkFn
QUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdB
QQpaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdB
QVpBUUlBQUNRRVNBQUFFQkdnQUFBCkFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdB
QVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUEKQUVCR2dBQUFBQmtCQWdB
QVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FB
WkFRSQpBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FB
WkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCCkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FB
WkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkcKZ0FBQUFCa0JBZ0FB
WkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUQpFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBClpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUEKQUJrQkFnQUFa
QVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpB
UUlBQUNRRVNBQQpBRUJHZ0FBQUFCa0JBZ0FBWkFRSUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpB
UUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJCkFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpB
UUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0IKQWdBQVpB
UUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFR
SUFBQ1FFU0FBQUVCRwpnQUFBQUJrQkFnQUFaQVFJQUFDUUVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFR
SUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRCkVTQUFBRUJHZ0FBQUFCa0JBZ0FBWkFR
SUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUEKWkFR
SUFBQ1FFU0FBQUVCR2dBQUFBQmtCQWdBQVpBUUlBQUNRRVNBQUFFQkdnQUFBQUJrQkFnQUFaQVFJ
QUFDUUVTQUFBRUJHZ0FBQQpBQmtCQWdBQVpBUUlBQUNRRVNBQUFFRG1GN0hYRnUvRDBubW5BQUFB
QUVsRlRrU3VRbUNDCgo=
</data>
<flag name="review"
          id="5810"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>